【问题标题】:standard ml datatype function标准 ml 数据类型函数
【发布时间】:2012-03-28 00:23:11
【问题描述】:

我创建了一个 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;

【问题讨论】:

    标签: function types union sml ml


    【解决方案1】:

    你需要对你的值构造函数IF进行模式匹配,并做任何适当的事情

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

    这为您提供了 4 个案例。当然,您也可以只使用 2 个案例,如果您创建一个将 number 解包为 real 的小型辅助函数,以涵盖除 int-int 之外的所有案例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 2011-09-06
      • 2018-08-16
      • 2015-10-06
      • 1970-01-01
      • 2016-01-19
      • 2019-06-19
      相关资源
      最近更新 更多