基本的OCaml函数返回类型错误

时间:2013-12-14 15:37:48

标签: string types char ocaml

我一直在尝试运行此功能:

let insert_char s c =
let z = String.create(String.length(s)*2 -1) in 
for i = 0 to String.length(s) - 1 do
    z.[2*i] <- s.[i];
    z.[2*i+1] <- c;
done;
z;;

print_string(insert_char("hello", 'x'));;

然而,解释器在最后一行“type is string * char”返回一个类型错误,并且它期望它是字符串。我以为我的函数insert_char创建了一个字符串。我真的不明白,谢谢。

2 个答案:

答案 0 :(得分:2)

您将函数定义为curried函数,但是您使用一对值调用它。你应该这样称呼它:

insert_char "hello" 'x'

OCaml不需要括号来进行函数调用。当两个值彼此相邻放置且两者之间没有任何内容时,这是一个函数调用。

答案 1 :(得分:0)

OCaml中函数应用程序的语法是f arg1 arg2,而不是f(arg1, arg2)。所以它会是print_string (insert_char "hello" 'x')

(一旦你修好了,你就会发现你的代码有其他问题,但这与你的问题无关。)