我不确定为什么这会导致我出错。任何帮助表示感谢,谢谢!问题是:“定义一个函数,该函数包含一个元素和一个列表,如果元素在列表中,则返回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;;
答案 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
;;
谢谢您的帮助!