Ocaml 使用与 lazylist 的匹配
Ocaml use match with lazylist
我试图用不成对的元素(递归)填充 ma lazylist,从元素 k 开始。例如:k = 2,列表为[2,3,5,7,9,...]
代码:
let lgen =
let rec gen k = LCons(k, fun () -> gen k (k + 2))
in gen 1;;
但是我如何检查元素 k 是否未配对? (我认为在这里我需要使用匹配)。
假设您的惰性列表类型是这样的:
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 ())
;;
我试图用不成对的元素(递归)填充 ma lazylist,从元素 k 开始。例如:k = 2,列表为[2,3,5,7,9,...]
代码:
let lgen =
let rec gen k = LCons(k, fun () -> gen k (k + 2))
in gen 1;;
但是我如何检查元素 k 是否未配对? (我认为在这里我需要使用匹配)。
假设您的惰性列表类型是这样的:
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 ())
;;