Functional programming SML:确定函数类型

Functional programming SML:确定函数类型,functional-programming,sml,Functional Programming,Sml,假设我所知道的函数类型是: int list -> int * string -> int 有没有办法提前知道这是否意味着: (int-list->int*string)->int或int-list->(int*string->int) 谢谢 bclayman在SML类型注释中是右关联的,因此int list->(int*string->int)是正确的 考虑REPL中的这个简单实验: - fun add x y = x+y; val add = fn : int -> in

假设我所知道的函数类型是:

int list -> int * string -> int
有没有办法提前知道这是否意味着:

(int-list->int*string)->int
int-list->(int*string->int)

谢谢


bclayman

在SML类型注释中是右关联的,因此
int list->(int*string->int)
是正确的

考虑REPL中的这个简单实验:

- fun add x y = x+y;
val add = fn : int -> int -> int
add
是一个函数,它在输入int时返回一个函数,即将
y
发送到
x+y
——因此它的类型是
int->(int->int)
。它不是一个函数,当一个函数从一个int到一个int输出一个int时(这就是
(int->int)->int
)。后一类事情的一个有点人为的例子是:

- fun apply_to_zero_and_increment f = 1 + f(0);
val apply_to_zero_and_increment = fn : (int -> int) -> int

如果我定义
fung g(x)=x+5
,那么
apply\u to\u zero\u和增量g
返回6。

->
在SML类型注释中是右关联的,所以
int list->(int*string->int)
是正确的

考虑REPL中的这个简单实验:

- fun add x y = x+y;
val add = fn : int -> int -> int
add
是一个函数,它在输入int时返回一个函数,即将
y
发送到
x+y
——因此它的类型是
int->(int->int)
。它不是一个函数,当一个函数从一个int到一个int输出一个int时(这就是
(int->int)->int
)。后一类事情的一个有点人为的例子是:

- fun apply_to_zero_and_increment f = 1 + f(0);
val apply_to_zero_and_increment = fn : (int -> int) -> int

如果我定义
fung g(x)=x+5
,那么
apply\u to\u zero\u和增量g
返回6。

->
在SML类型注释中是右关联的,所以
int list->(int*string->int)
是正确的

考虑REPL中的这个简单实验:

- fun add x y = x+y;
val add = fn : int -> int -> int
add
是一个函数,它在输入int时返回一个函数,即将
y
发送到
x+y
——因此它的类型是
int->(int->int)
。它不是一个函数,当一个函数从一个int到一个int输出一个int时(这就是
(int->int)->int
)。后一类事情的一个有点人为的例子是:

- fun apply_to_zero_and_increment f = 1 + f(0);
val apply_to_zero_and_increment = fn : (int -> int) -> int

如果我定义
fung g(x)=x+5
,那么
apply\u to\u zero\u和增量g
返回6。

->
在SML类型注释中是右关联的,所以
int list->(int*string->int)
是正确的

考虑REPL中的这个简单实验:

- fun add x y = x+y;
val add = fn : int -> int -> int
add
是一个函数,它在输入int时返回一个函数,即将
y
发送到
x+y
——因此它的类型是
int->(int->int)
。它不是一个函数,当一个函数从一个int到一个int输出一个int时(这就是
(int->int)->int
)。后一类事情的一个有点人为的例子是:

- fun apply_to_zero_and_increment f = 1 + f(0);
val apply_to_zero_and_increment = fn : (int -> int) -> int
如果我定义
fung g(x)=x+5
,那么
将_应用于_zero _,并且_增量g
返回6