0

我创建了一个 number 类型的数据类型,它可以是 int 也可以是 real,我需要创建一个函数来添加 2 个“number”类型的数字,而我遇到的问题是定义这样的语法语法,我尝试了以下但似乎没有工作。我写的代码如下,下面的代码是这样写的,用来检查函数是否将 n 识别为 number 类型:

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;
4

1 回答 1

1

您需要针对您的值构造函数I和进行模式匹配F,并做任何适当的事情

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

这给了你4个案例。当然,您也可以只使用 2 个案例,如果您制作一个将 a 解包为 a 的小辅助函数numberreal以涵盖除int-案例之外的所有int案例。

于 2012-03-27T16:23:11.167 回答