首页 > 解决方案 > 它适用于太多的论点;也许你忘记了一个`;'

问题描述

我正在尝试编写一个计算列表大小的代码。

这是我所做的:

let rec l = function 
  | [] -> 0 
  | t::q -> 1 + l q


print_int(l ([1;2;3;4]))

问题是它在说我:

It is applied to too many arguments; maybe you forgot a `;'.

当我将双分号;;放在它的定义末尾时l效果很好,但是我读过;;如果您不在 REPL 中编码,那根本没有用,所以在这里我不明白为什么它会给我这个错误.

标签: syntaxsyntax-errorocaml

解决方案


以下

print_int(l [1;2;3;4])

是顶级表达式。这样的表达式需要在前面加上;;

;; print_int(l [1;2;3;4])

另一种选择是使这个顶级表达式与

let () = print_int(l [1;2;3;4])

推荐阅读