我制作了一个类型为number的数据类型,可以是int,也可以是real,我需要制作一个函数来添加类型为"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;
您需要根据值构造函数I
和F
进行模式匹配,并执行任何适当的
fun plus (I a) (I b) = I (a+b)
| plus (I a) (F b) = ...
| etc...
这给你4个案例。当然,如果您制作一个将number
解包为real
的小辅助函数,以包含除int
-int
之外的所有情况,那么您也可以只使用两种情况来执行此操作。