}
-Compound Literals
+Composite Literals
----
-Literals for compound data structures consist of the type of the constant
-followed by a parenthesized expression list. In effect, they are a
-conversion from expression list to compound value.
+Literals for composite data structures consist of the type of the value
+followed by a parenthesized expression list. In appearance, they are a
+conversion from expression list to composite value.
-TODO: Needs to be updated.
+Structure literals follow this form directly. Given
+ type Rat struct { num, den int };
+ type Num struct { r Rat, f float, s string };
+
+we can write
+
+ pi := Num(Rat(22,7), 3.14159, "pi")
+
+For array literals, if the size is present the constructed array has that many
+elements; trailing elements are given the approprate zero value for that type.
+If it is absent, the size of the array is the number of elements. It is an error
+if a specified size is less than the number of elements in the expression list.
+
+ primes := [6]int(2, 3, 5, 7, 9, 11)
+ weekdays := []string("mon", "tue", "wed", "thu", "fri", "sat", "sun")
+
+Map literals are similar except the elements of the expression list are
+key-value pairs separated by a colon:
+
+ m := map[string]int("good":0, "bad":1, "indifferent": 7)
+
+TODO: helper syntax for nested arrays etc? (avoids repeating types but
+complicates the spec needlessly.)
Pointer types
----