【问题标题】:Basic OCaml function returns type error基本 OCaml 函数返回类型错误
【发布时间】:2014-01-02 07:40:18
【问题描述】:

我一直在尝试运行这个功能:

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 创建了一个字符串。不太明白,谢谢。

【问题讨论】:

    标签: string types char ocaml


    【解决方案1】:

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

    insert_char "hello" 'x'
    

    OCaml 函数调用不需要括号。当两个值彼此相邻放置时,这就是一个函数调用。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-04-11
        • 2019-12-12
        • 2015-11-17
        • 2012-10-28
        • 1970-01-01
        • 2020-07-17
        • 1970-01-01
        • 2016-01-31
        • 2018-11-22
        相关资源
        最近更新 更多