Idris2/tests/idris2/lazy001/Lazy.idr
2021-01-21 11:33:03 +00:00

22 lines
408 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)