module TakeLazy;
data Nat = Zero | S(Nat);
// Lazyness removed, as not supported by abs!
def List take_l(Nat n, List xs) =
case xs {
Nil => Nil;
Cons(x,xsP) => case n {
Zero => Nil;
S(nP) => Cons(x, take_l(nP, xsP));
};
};
def List zeros() = Cons(Zero, zeros());
// let main n zeros = take_l n zeros;;
// def List start(Nat n, List zeros) = take_l(n,zeros);
def List start(Nat n) = take_l(n,zeros());
{
}