【问题标题】:Ocaml use match with lazylistOcaml 使用匹配惰性列表
【发布时间】:2018-05-06 18:13:55
【问题描述】:

我正在尝试用不成对的元素(使用递归)填充 ma 惰性列表,从元素 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 是否未配对? (我认为这里我需要使用匹配)。

【问题讨论】:

  • 完全不清楚您所说的“未配对”是什么意思。

标签: ocaml lazylist


【解决方案1】:

假设你的惰性列表类型是这样的:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多