我试图用不成对的元素(用递归)填充ma lazylist,从元素k开始。例如:k = 2,list是[2,3,5,7,9,...]
代码:
let lgen =
let rec gen k = LCons(k, fun () -> gen k (k + 2))
in gen 1;;
但我如何检查k元素未配对? (我想在这里我需要使用匹配)。
答案 0 :(得分:0)
假设懒惰列表的类型是这样的:
type 'a llist = LNil | LCons of 'a * (unit -> 'a llist);;
你可以像这样模式匹配:
let rec lfind e lxs =
match lxs with
| LNil -> false
| LCons(x, _) when x > e -> false
| LCons(x, xs) -> if e=x then true else lfind e (xs ())
;;