A persistent list with functional transformations.
use "collections/persistent" actor Main new create(env: Env) => try let l1 = Lists[U32]([2; 4; 6; 8]) // List(2, 4, 6, 8) let empty = Lists[U32].empty() // List() // prepend() returns a new List, leaving the // old list unchanged let l2 = empty.prepend(3) // List(3) let l3 = l2.prepend(2) // List(2, 3) let l4 = l3.prepend(1) // List(1, 2, 3) let l4_head = l4.head() // 1 let l4_tail = l4.tail() // List(2, 3) l4_head == 1 Lists[U32].eq(l4, Lists[U32]([1; 2; 3]))? Lists[U32].eq(l4_tail, Lists[U32]([2; 3]))? let doubled = l4.map[U32]({(x) => x * 2 }) Lists[U32].eq(doubled, Lists[U32]([2; 4; 6]))? end
type List[A: A] is (Cons[A] val | Nil[A] val)
© 2016-2018, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/collections-persistent-List