1 object List = 2 def from<T> (array : mut Array<T>) = 3 let size @param = array.size 4 let list = List<T> =array =size 5 6 list.as_readonly 7 8 object MutList<T> = 9 def from (slice : Slice<T>) = 10 let capacity @param = slice.size * 2 11 let list = List<T>.new 12 list.provision capacity 13 for i = 0 until slice.size do 14 list.add slice[i] 15 16 list 17 18 object List<T> 19 def from (slice : Slice<T>) = 20 let list = MutList<T>.from slice 21 capacity = slice.size 22 list.as_readonly 23 24 fun from_slice<T> (slice : Slice<T>) : List<T> = List<T>.from slice 25 fun from_slice<T> (slice : Slice<T>) : MutList<T> = MutList<T>.from slice 26 27 def list_of<T> (list : List<T> @vararg) = list 28 def mut_list_of<T> (list : MutList<T> @vararg) = list 29 30 def repeat_list<T> (x : T) (n : u32) = 31 let list = List<T>.new 32 list.provision n 33 for _ = 1 to n do 34 list.add x 35 36 list 37 38 def repeat_list<T> (x : T) (n : i32) = 39 assert n >= 0 40 repeat_list x n.as<u32> 41