1

有人可以向我描述这个 F# 表达式吗?

val augment: GameGrid -> points -> unit

val关键字是什么意思?

type -> type通常表示返回指定类型的函数是真的吗?那么是否type -> type -> type表示一个函数返回一个返回指定类型的函数呢?

4

2 回答 2

4

(“val”位不是表达式;我认为它可以出现在三种不同的上下文中:

  • FSI(F# 交互式 REPL)的输出,描述推断的绑定类型
  • 在签名 (.fsi) 文件中,描述让绑定模块值的类型
  • 在结构/类定义(“显式”语法)中,定义实例变量

这些都不是技术上的表达上下文。)

至于类型,确实

A1 -> A2 -> R

表示一个接受 A1 并返回一个接受 A2 并返回 R 的函数的函数。参数是 curried 的,你可以好好阅读一下,例如

F# 函数类型:元组和柯里化的乐趣

其中更详细地描述了柯里化和部分应用。

于 2009-05-13T17:01:42.757 回答
3

你是怎么得到这个输出的?在 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

您对返回函数的函数的想法实际上是正确的。这是许多函数式语言中一种非常有趣的技术,称为柯里化

于 2009-05-13T17:02:49.120 回答