gpt4 book ai didi

ocaml - 为什么这个 OCaml 代码收到 "Unexpected token"?

转载 作者:行者123 更新时间:2023-12-02 05:17:28 25 4
gpt4 key购买 nike

let rec move_robot (pos: int) (dir: string) (num_moves: int) : int =

let new_forward_position = pos + num_moves in
if (new_forward_position > 99) then failwith "cannot move beyond 99 steps"
else new_forward_position

let new_backward_position = pos - num_moves in
if (new_backward_position pos < 0) then failwith "cannot move less than 0 steps"
else new_backward_position

begin match dir with
| "forward" -> new_forward position
| "backward" -> new_backward_position
end

我一直在为 let new_backward_position 行获取“意外 token ”。我的错误是什么?

最佳答案

这是编译的代码:

let rec move_robot pos dir num_moves =
let new_forward_position = pos + num_moves in
if new_forward_position > 99 then failwith "cannot move beyond 99 steps";

let new_backward_position = pos - num_moves in
if new_backward_position < 0 then failwith "cannot move less than 0 steps";

begin match dir with
| "forward" -> new_forward_position
| "backward" -> new_backward_position
end

我修改了几个东西:

  • 重要提示:if foo then bar else qux 是 OCaml 中的一个表达式,它取值 barqux。因此 barqux 需要具有相同的类型。
  • new_backward_position 而不是 new_backward_position pos
  • 你不需要类型注释:OCaml 有类型推断
  • if 子句周围不需要括号
  • new_forward 位置错别字

此外,根据您的代码逻辑,let _ = move_robot 0 "forward"5 失败。它不应该返回 5 吗?我建议您为 pos 定义一个求和类型,然后先对其进行模式匹配。

关于ocaml - 为什么这个 OCaml 代码收到 "Unexpected token"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14419750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com