我想从列表中删除特定元素(X)
let rec remove x list =
match list with
| [] -> []
| var :: tail -> match var with
| x -> remove x tail
| _ -> var :: (remove x tail)
;;
这是我到目前为止已经完成,但是当我尝试
remove 5 [1;2;3;4;5]
它返回空列表[]。
这match
没有做什么你认为:
match var with
| x -> remove x tail
| _ -> var :: (remove x tail)
这里的x
是由一个标识符(名称)的图案。这种模式的匹配所有可能的值,并结合名义值。
所以,你的模式匹配所有的时间,因此您的列表是空的。
你不能用一个模式来匹配像x
变量值。你只能比对像3或无固定值。
您应该使用if
语句来测试var
是否等于x
。