Idris2-boot/tests/idris2/lazy001/Lazy.idr
2019-06-24 18:08:32 +01:00

23 lines
409 B
Idris

infixr 5 ::
namespace List
public export
data List a = Nil | (::) a (List a)
namespace Stream
public export
data Stream a = (::) a (Inf (Stream a))
ones : Stream Integer
ones = num :: ones
where
num : Integer -- gratuitous where for a regression test!
num = 1
data Nat = Z | S Nat
take : Nat -> Stream a -> List a
take Z xs = Nil
take (S k) (x :: xs) = List.(::) x (take k xs)