首页 > 解决方案 > ocaml boolean 定义一个包含元素的函数,如果是则返回 true,否则返回 false

问题描述

我不知道为什么这会给我一个错误。感谢您提供任何帮助!问题是:“定义一个函数包含获取一个元素和一个列表,如果元素在列表中则返回 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;;

标签: if-statementocaml

解决方案


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

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

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

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

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

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


推荐阅读