ocaml boolean定义一个包含元素的函数,如果是则返回true,否则返回false

时间:2019-02-05 21:06:48

标签: if-statement ocaml

我不确定为什么这会导致我出错。任何帮助表示感谢,谢谢!问题是:“定义一个函数,该函数包含一个元素和一个列表,如果元素在列表中,则返回true,否则返回false。”

我的答案是:

let contains elt l = 
    if l = l
      then true
    else
      false;;

当我测试它时,一切都是真的。

更新:

我认为这更接近答案,但仍然无法解决问题。

    let rec contains elt l = 
      if 
        elt = l
        l = []
      then true
      else
      false;;

2 个答案:

答案 0 :(得分:0)

让我们将您的函数应用于5,这是计算机如何减少/评估您的代码的方法:

 contains elt 5 => if 5 = 5 then true else false

显然5将始终等于5。此外,变量将始终等于其自身。

提示1:您没有使用第一个参数

提示2:第二个参数是一个元素列表,您应该在其中搜索第一个参数

提示3:您需要使用递归并解构第二个参数,并将列表的每个元素与提供的elt变量进行比较。

答案 1 :(得分:0)

正确的答案是:

    let contains elt l = 
      match l with
      [] -> false
      | y :: ys -> elt = y || contains elt ys
      ;;

谢谢您的帮助!