【发布时间】:2019-11-28 21:39:53
【问题描述】:
我正在学习 sml,但我被困在了一个练习中。他们给了我一个这样的数据类型
datatype Expr = X
|Y
| Avg of Expr * Expr
| Mul of Expr * Expr
我需要编写一个名为 compute 的函数,这样我就可以在函数类型所在的位置进行平均或乘法运算
Expr -> int -> int -> int
所以我做了这个
val rec compute = fn X => (fn x => fn y => x)
| Y => (fn x => fn y => y)
| Avg(e1,e2) => ( fn x => fn y => ((compute e1 x y) + (compute e2 x y)) div 2)
| Mul(e1,e2) => ( fn x => fn y => (compute e1 x y ) * (compute e2 x y))
现在我需要从终端调用它,但我不知道如何调用该函数。我尝试了
compute Avg 4 2;
但它给了我
poly: : error: Type error in function application.
Function: compute : Expr -> int -> int -> int
Argument: Avg : Expr * Expr -> Expr
Reason: Can't unify Expr to Expr * Expr -> Expr (Incompatible types)
Found near compute Avg 4 2
Static Errors
有人可以指导我完成这个吗?谢谢大家 附:有没有办法让这个变得有趣
【问题讨论】:
标签: sml