首页 文章

Int列表到int OCaml

提问于
浏览
1

我是OCaml的新手,所以我正在学习基础知识 . 我正在编写一个函数来确定列表是否包含给定的整数 .

let rec int_member (x: int) (l: int list) : bool 
begin match l with
| [] -> false
| hd :: rest -> x = hd || int_member rest x
end

作为测试案例......

let test (): bool =
(int_member 1 [1;2;3]) = true
;; run_test "contains 1 [1;2;3]" test

我收到一个错误,说“这个表达式有类型int列表,但表达式需要int类型” . 我怎样才能解决这个问题?

2 回答

  • 1

    如果你看看你的递归调用,你应该看到你没有正确地传递参数!否则这段代码非常好 . (我看到缺少 = ,并且在这里使用 beginend 并不是非常惯用的OCaml . 你可以把它们留下来 . )

  • 3

    int_member rest x

    int_member 的第一个参数应为 int . 你传递 int list 作为第一个参数 . 这就是错误消息所抱怨的内容 .

    你只需切换参数的顺序 .

    PS:代码中的 begin ... end 是多余的 .

相关问题