在标准ML中包装数据类型

时间:2018-03-07 21:01:31

标签: sml ml mosml

这个问题是对此处发布的问题的跟进问题:

Understanding user defined append list Standard ml

我遇到的问题是我似乎无法弄清楚如何正确地将附加节点正确地包装在NonNil中。我的代码是:

fun alistAppend (xs: 'a alist, ys: 'a alist): 'a alist = 
    case xs of
    Nil => ys
   | _ =>  NonNil (Append (xs,ys));

我知道这段代码可能无法正确追加,我只想弄清楚如何为这个函数获取正确的返回类型。包装附加节点的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

能够通过创建一个新的val来解决这个问题:

val paired = (xs ,ys); 

我能够同时检查xs和ys的值。只需要检查x和y是否都是NonNil,然后在NotNil节点中创建相应的Append Node。