标准ml数据类型函数

时间:2012-03-27 15:43:34

标签: function types union sml ml

我创建了一个类型编号的数据类型,可以是int或real,我需要创建一个函数来添加2个数字类型" number",以及我有什么问题是使用定义这种语法的语法,我尝试了以下但似乎没有工作。 我写的代码如下,以下代码是这样编写的,用于检查函数是否识别n为类型编号:

fun plus n:number = "type number";

fun plus n:I = "type int of number";

fun plus n:number.I = "type int of number";

但似乎没有效果,我写的语法是正确的还是错的? 感谢

我写的数据类型号是:

datatype number = 
  I of int
| F of real;

1 个答案:

答案 0 :(得分:1)

您需要针对值构造函数IF进行模式匹配,并执行适当的操作

fun plus (I a) (I b) = I (a+b)
  | plus (I a) (F b) = ...
  | etc...

这给你4个案例。你当然也可以只用2个案例来做,如果你做一个小帮助函数,将number解包到real,除了int - {{1}之外的其他所有函数} case。