[英]Ocaml functions using List and couples
我有一个任务要完成,但是我遇到了麻烦。 这是在ocaml中,列表是主要焦点。
第一个函数接受一对夫妇的列表[(a1,b1);(a2,b2)...]并验证每个“ a”是否不同。
我尝试分两部分进行此操作:
let rec isNotIn x = function
|[]-> true
|(a,_)::l -> a <> x && isNotIn a l;;
let isFunction = function
|[] -> false
|(a,_)::l -> isNotIn a l;;
我找不到一种使它起作用的方法,isFunction仅检查以下对夫妇的第一个元素是否等于其自己的元素。 但是我需要它来检查列表中的每个第一个元素,而不仅仅是下一个。
好吧,除了忘记了递归调用,您所做的几乎是完美的:
let rec isFunction = function
| [] -> true (* if the function is empty it's ok, no ? *)
| (a, _) :: l -> isNotIn a l && isFunction l;;
而且,实际上,您的第一个函数不仅接收一对夫妇,而且接收一个元素x
并验证x
不是列表中任何一对的第一个元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.