我将如何继续证明这两个函数的输入是否良好?我有点迷失这个问题。
let rec reduce f lst u =
match lst with
| [] -> u
| (h::t) -> f h (reduce f t u)
let rec forall2 p l1 l2 =
match (l1,l2) with
| ([],[]) -> true
| ([],_) -> false
| (_,[]) -> false
| ((h1::t1),(h2::t2)) ->
(p h1 h2) && (forall2 p t1 t2)
答案 0 :(得分:0)
我不会给出完全成熟的解决方案,因为这个问题看起来像是一项任务。
要自己进行类型推断,您所要做的就是查看源并进行推断。然后,根据您的推论,推导出越来越多的类型,直到所有类型都已知,或者直到您发现差异为止。
为了帮助您入门:
reduce
中,您对lst
类型的模式进行了模式匹配'a list
。因此,lst
必须输入为'a list
。u
与f h (reduce f t u)
具有相同的类型。Etcætera,etcætera...