如何在OCaml中使用let-in多行?

时间:2014-08-11 01:06:46

标签: ocaml

我想做以下事情:

let dist = Stack.pop stck and dir = Stack.pop stck in (
    print_endline(dist);
    print_endline(dir);
    ......
    ......
)

上面给出了以下错误:

Error: This expression has type unit
       This is not a function; it cannot be applied.

如何在多行上使用变量dist和dir?

2 个答案:

答案 0 :(得分:3)

错误不在此处显示的代码中。我想你忘记了;某处。

但是代码中存在一个微妙的错误。 在这行代码中

let dist = Stack.pop stck and dir = Stack.pop stck in

您希望在dist中获取堆栈的第一个元素,在dir中获取第二个元素,但可能不是the order of evaluation is unspecified

答案 1 :(得分:2)

您的代码的基本语法是可以的。这是一个简单的例子,表明它工作正常:

$ ocaml
        OCaml version 4.01.0

# let x = 5 and y = 4 in (
  print_int x;
  print_int y;
  );;
54- : unit = ()
#

报告的错误与其他问题有关。我们需要更多背景来查看错误。可能错误出现在您排除的行中。或者他们可能是由接下来的事情引起的。