Ocaml使用与lazylist匹配

时间:2017-11-22 21:44:51

标签: ocaml lazylist

我试图用不成对的元素(用递归)填充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元素未配对? (我想在这里我需要使用匹配)。

1 个答案:

答案 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 ())
    ;;