OCaml表达式类型问题

发布于 2024-12-07 23:45:26 字数 539 浏览 1 评论 0原文

我正在尝试创建一个 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 。

谁能帮忙解决这个问题

I am trying to make an OCaml function that addsthe number of 'a's in a string to a given argument.

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)

I get an error on line 4 saying 'This expression has type string -> int but is here used with type int'. I am not sure why it expects the expression 'count_l_in_word initial+1' to be an int. It should really expect the whole line 'count_l_in_word initial+1 (Str.string_after word 1)' to be an int.

Can anyone help with this

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青丝拂面 2024-12-14 23:45:26
count_l_in_word initial+1 (Str.string_after word 1)

被解析为

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

所以你需要添加一些括号:

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

is parsed as

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

so you need to add some parens:

count_l_in_word (initial + 1) (Str.string_after word 1)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文