mirror of
https://github.com/unisonweb/unison.git
synced 2024-10-26 11:07:48 +03:00
11 lines
244 B
Plaintext
11 lines
244 B
Plaintext
use Optional None Some
|
|
|
|
unfold : s -> (s ->{z} Optional (a, s)) ->{z} [a]
|
|
unfold s f =
|
|
go s acc = match f s with
|
|
None -> acc
|
|
Some (hd, s) -> go s (List.snoc acc hd)
|
|
go s []
|
|
|
|
> unfold 0 (n -> if n < 5 then Some (n, n + 1) else None)
|