我有这种类型,它定义了一个表达式.我知道这个*符号可以让我添加成对,但它的->用途是什么?
# type expression = Value of float
| Sum of (expr*expr)
| Subtraction of (expr*expr)
| Fc1 of ((float->float)*expr)
Run Code Online (Sandbox Code Playgroud)
sep*_*p2k 10
该->操作是函数类型.a -> b表示" ain,bout",float -> float将float作为参数并生成float作为结果的函数类型也是如此.
关于什么
float -> float -> float
->是右结合的,所以a -> b -> c是相同的a -> (b -> c)意思的函数,它接受一个a,并产生类型的另一个功能b -> c.这样的功能通常用于模拟多参数的函数(可以使用f x y适用f于x,然后应用所得到的函数,以y,它有效地调用与两个参数内功能)作为替代的元组.这种模拟多参数函数的方法称为currying.