有人可以向我描述这个 F# 表达式吗?
val augment: GameGrid -> points -> unit
val
关键字是什么意思?
type -> type
通常表示返回指定类型的函数是真的吗?那么是否type -> type -> type
表示一个函数返回一个返回指定类型的函数呢?
(“val”位不是表达式;我认为它可以出现在三种不同的上下文中:
这些都不是技术上的表达上下文。)
至于类型,确实
A1 -> A2 -> R
表示一个接受 A1 并返回一个接受 A2 并返回 R 的函数的函数。参数是 curried 的,你可以好好阅读一下,例如
其中更详细地描述了柯里化和部分应用。
你是怎么得到这个输出的?在 FSI?
Val 只是表示一个值的定义。
例如,如果您在 C# 中编写了以下内容
private void Foo(int i);
你会用 F# 写这个
val Foo : int -> unit
关于type -> type -> type
:这是一个有两个参数(类型)返回“类型”的函数
例如
let plus a b = a + b
有签名int -> int -> int
。
您对返回函数的函数的想法实际上是正确的。这是许多函数式语言中一种非常有趣的技术,称为柯里化