Idris2/tests/idris2/misc/lazy001/Lazy.idr

22 lines
416 B
Idris
Raw Normal View History

private 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)