我有一段时间没有使用SML,我遇到了这行代码:
type memory = string -> int;
这会将'memory'定义为一个函数,它接受一个字符串a返回一个int,或者完全不同的东西?我已经搜索了类似的声明,但我似乎无法找到它或弄清楚它的作用。
当我把它放入SML / NJ时,我得到了这个:
- type memory = string -> int;
type memory = string -> int
答案 0 :(得分:8)
memory
不是函数,它只是一个类型的缩写,它是一个函数,它将字符串作为输入并返回一个int。
因此,无论何时您想要写出string->int
类型的内容,您都可以将其写为memory
类型。
例如,而不是写作:
- fun foo(f : string->int, s) = f s;
val foo = fn : (string -> int) * string -> int
你可以写:
- fun foo( f: memory, s) = f s;
val foo = fn : memory * string -> int
此类type
声明可以使您的代码更具可读性(例如,您可以创建一个缩写,而不是写x
对类型为int*int
(x: int*int)
type pair = int*int
然后您可以写x
类型为pair
的{{1}}}。