【发布时间】:2016-01-22 22:30:11
【问题描述】:
我正在 OCaml 中执行一个函数,我想计算变量 n 中的迭代次数。这是函数:
let mapdoble f1 f2 l =
let rec aux n f_1 f_2 l1 l2= match(n,f_1,f_2,l1,l2) with
(n,_,_,[],l2) -> l2
| (n,f_1,_,h::t,l2) when n mod 2 = 0 -> aux n+1 f1 f2 t l2@[f_1 h]
| (n,_,f_2,h::t,l2) when n mod 2 = 1 -> aux n+1 f1 f2 t l2@[f_2 h]
in
aux 0 f1 f2 l [];;
当我编译它时,我有这个错误,我不知道它是什么:
Error: This expression has type 'a -> 'b -> 'c list -> 'd -> 'd but an expression was expected of type int
【问题讨论】:
-
我认为您只是缺少
n+1的两个实例周围的括号。 -
@ReimerBehrends 是写的,你必须在
n+1周围加上括号。您还必须匹配所有情况,编译器也应该通过示例警告您。
标签: function recursion integer ocaml