OCaml表达式类型问题

时间:2011-09-30 13:27:37

标签: functional-programming ocaml currying

我正在尝试创建一个OCaml函数,将一个字符串中的'a'添加到给定的参数中。

let rec count_l_in_word (initial : int) (word : string) : int=
    if String.length word = 0 then initial else
    if word.[0] = 'a' then 
        count_l_in_word initial+1 (Str.string_after word 1)
    else count_l_in_word initial (Str.string_after word 1)

我在第4行收到错误,说'此表达式有字符串 - > int但是在这里用于int'类型。我不确定为什么它希望表达式'count_l_in_word initial + 1'是一个int。它应该真的期望整行'count_l_in_word initial + 1(Str.string_after word 1)'是一个int。

任何人都可以帮忙解决这个问题。

1 个答案:

答案 0 :(得分:4)

count_l_in_word initial+1 (Str.string_after word 1)

被解析为

(count_l_in_word initial) + (1 ((Str.string_after word) 1))

所以你需要添加一些parens:

count_l_in_word (initial + 1) (Str.string_after word 1)