在OCaml中输入推理帮助

时间:2017-10-18 00:08:14

标签: ocaml computer-science-theory proofs

我将如何继续证明这两个函数的输入是否良好?我有点迷失这个问题。

  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)

1 个答案:

答案 0 :(得分:0)

  

我不会给出完全成熟的解决方案,因为这个问题看起来像是一项任务。

要自己进行类型推断,您所要做的就是查看源并进行推断。然后,根据您的推论,推导出越来越多的类型,直到所有类型都已知,或者直到您发现差异为止。

为了帮助您入门:

  • reduce中,您对lst类型的模式进行了模式匹配'a list。因此,lst必须输入为'a list
  • 每个模式之后的值必须具有相同的类型,因此uf h (reduce f t u)具有相同的类型。

Etcætera,etcætera...