例如,考虑以下代码:
type foo = Foo of int
let apply z f = f z
(* This is not allowed *)
let create_foo = Foo
(* This is allowed *)
let create_foo i = Foo i
(* This is not allowed *)
apply 1 Foo
(* This is allowed *)
apply 1 create_foo
Run Code Online (Sandbox Code Playgroud)
数据构造函数是必须完全应用的特殊功能吗?当作为功能使用,Foo并create_foo在他们所做的事情是相同的。禁止将其Foo用作可以传递和部分应用的常规函数的原因是什么?
Haskell 似乎允许这种行为。