let ... in 的 OCaml 语法错误

标签 ocaml syntax-error

我认为我有一个非常简单的问题,但无法弄清楚出了什么问题。 我想打开一个文件并在文件不存在或其他情况下尝试失败并显示一条自定义消息。

这是我的代码(抱歉有法语评论):

if (argc = 1) then
    aide ()
else
    (* Si plus d'un argument, on récupère le type *)
    if argc >= 2 then
        let stage = int_of_string (Sys.argv.(1)) in
            if stage != 0 && stage != 1 then
                aide ()
            else
                ()
    else
        ()
    ;    
    (* Si plus de deux arguments, on récupère aussi l'entrée *)
    if argc >= 3 then
        let filename = Sys.argv.(2) in
        let input =
        try
            open_in filename
        with _ -> failwith ("Impossible d'ouvrir le fichier " ^ filename)
    else
        ()
    ;
;;

我在 with 关键字上有一个语法错误。 有人有想法吗?谢谢。

最佳答案

发生错误是因为您将 input 绑定(bind)到一个值,但没有在 then 分支中返回任何内容。

您应该在 try/with block 之后对值 input 做一些事情并返回 ()

if argc >= 3 then
    let filename = Sys.argv.(2) in
    let input = (* The error is in this line *)
    try
        open_in filename
    with _ -> failwith ("Impossible d'ouvrir le fichier " ^ filename)
else
    ()

关于let ... in 的 OCaml 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10447809/

相关文章:

ocaml - 是否有使用OCaml开发的Window Manager?

functional-programming - 如何在 OCaml 中以功能方式使用支持就地修改的字段更新记录?

sql - SQL语法错误,不是我的查询

JavaScript 解释器忽略语法错误

php - FatalErrorException : Parse: syntax error, unexpected T_PUBLIC in

ocaml - 在 2D 列表 (OCaml) 中组合具有相同头部的列表

c - If then 具有多个表达式 OCaml

algorithm - 查找数组中的最大段,使其中的最小值大于或等于段的大小

python - 将带有参数的函数传递给函数时的语法错误(python)

Javascript代码语法不正确,不是字符串