@@ -73,6 +73,48 @@ let isPet = (animal: animals) => {
73
73
74
74
Read more about [ variant type spreads in pattern matching] ( pattern-matching-destructuring.md#match-on-subtype-variants ) .
75
75
76
+ ## List immutable update
77
+ Spreads can be used for immutable updates of lists:
78
+
79
+ ``` res
80
+ let prepended = list{1, ...someOtherList}
81
+
82
+ // You can spread several lists, but it's O(n) so avoid it if possible
83
+ let multiple = list{1, ...prepended, ...anotherList}
84
+ ```
85
+
86
+ Read more about [ immutable list updates] ( array-and-list.md#immutable-prepend ) here.
87
+
88
+ ## List pattern matching
89
+ Spreads can be used when pattern matching on lists:
90
+
91
+ ``` res
92
+ let rec printStudents = (students) => {
93
+ switch students {
94
+ | list{} => () // done
95
+ | list{student} => Console.log("Last student: " ++ student)
96
+ | list{student1, ...otherStudents} =>
97
+ Console.log(student1)
98
+ printStudents(otherStudents)
99
+ }
100
+ }
101
+ printStudents(list{"Jane", "Harvey", "Patrick"})
102
+ ```
103
+
104
+ Read more about [ pattern matching on lists] ( pattern-matching-destructuring.md#match-on-list ) .
105
+
106
+ ## Array immutable update
107
+ > Available in v11+
108
+
109
+ You can use spreads to add the contents of one array to another, just like in JavaScript:
110
+
111
+ ``` res
112
+ let firstArray = [1, 2, 3]
113
+ let secondArray = [...firstArray, 4, 5]
114
+ ```
115
+
116
+ Read more about [ array spreads] ( array-and-list.md#array-spreads ) .
117
+
76
118
## Partial application of functions
77
119
> Available in v11+ (uncurried mode)
78
120
@@ -91,5 +133,7 @@ Read more about [partial application of functions](function.md#partial-applicati
91
133
* [ Record immutable updates] ( record.md#immutable-update )
92
134
* [ Variant type spreads] ( variant.md#variant-type-spreads )
93
135
* [ Variant type spreads in pattern matching] ( pattern-matching-destructuring.md#match-on-subtype-variants )
94
- * [ Partial application of functions] ( function.md#partial-application )
95
-
136
+ * [ List immutable updates] ( array-and-list.md#immutable-prepend )
137
+ * [ List pattern matching] ( pattern-matching-destructuring.md#match-on-list )
138
+ * [ Array spreads] ( array-and-list.md#array-spreads )
139
+ * [ Partial application of functions] ( function.md#partial-application )
0 commit comments