我有这种类型,它定义了一个表达式。我知道*
符号可以让我添加对,但是->
是什么?
# type expression = Value of float
| Sum of (expr*expr)
| Subtraction of (expr*expr)
| Fc1 of ((float->float)*expr)
答案 0 :(得分:10)
->
运算符用于函数类型。 a -> b
表示“a
in,b
out”,因此float -> float
是将float作为参数并生成浮动作为结果的函数类型。
怎么样?
float -> float -> float
->
是右关联的,因此a -> b -> c
与a -> (b -> c)
相同,这意味着一个函数接受a
并生成另一个类型b -> c
的函数。这样的函数通常用于模拟多参数函数(您可以使用f x y
将f
应用于x
,然后将生成的函数应用于y
,这会有效地调用带有两个参数的内部函数)作为元组的替代。这种模拟多参数函数的方法称为currying。