【发布时间】:2016-05-31 12:16:06
【问题描述】:
我不明白为什么即使我们用一个参数声明以下函数也可以使用 2 个参数:
let rec removeFromList e = function
h :: t -> if h=e then h
else h :: removeFromList e t
| _ -> [];;
removeFromList 1 [1;2;3];;
【问题讨论】:
-
(1) 函数
removeFromList不会编译,除非它包含在包含removeFromList的其他定义的某个上下文中。我相信其目的是像这样定义它let rec removeFromList ...。 (2) 编译器应该抱怨函数体中缺少[]大小写。 -
谢谢,我写错了;编辑所以现在应该没问题
-
OCaml 中的 All 函数总是只接受一个参数。语法
removeFromList e t(解析为(removeFromList e) t,因为函数应用程序是左关联的)只是将removeFromList应用于e,然后将其结果(恰好是一个函数)应用于t。
标签: function parameters arguments ocaml