+
+
+-----
+I need a list of steps again:
+
+ - look up type by name and add syntax for
+ name : type = value
+ and
+ name : type
+
+ - Add arrays:
+ name : type[size]
+ declares an array of that type/size
+ name : [] = [ 1,2,3 ]
+ declares an array of 3 numbers.
+ name[1]
+ extracts an element from the array,
+ name[2] = 4
+ updates an element
+ name[4:5]
+ creates a slice, which can be stored in a var (borrowed ref) or
+ assigned to
+
+ This requires:
+ - new type class which has a size and member type
+ - new type access methods: index and size(?)
+ - new syntax
+ - new manifest values: [a,b,c] creates an array of whatever member type.
+
+ - add syntax for
+ struct name : [[ name : type ]]
+ to define a new struct
+
+ - add syntax to extra a field from a struct
+ how is this type-checked if I don't know the type yet?
+
+ - add syntax for pointers
+ a:= new(struct foo)
+ a:struct foo^ = new()
+
+-------
+Questions:
+ If I declare "struct foo ..." do I use "foo" or "struct foo" to ref the type?
+ I think just "foo".
+ So structs, records, enums, and classes must have distinct names.