如何在Standard-ML中指定数据类型中的类型约束?

时间:2016-04-25 21:05:39

标签: functional-programming sml

在Standard-ML中考虑这种数据类型:

datatype 't options = Null
                   | Some of 't

我还有其他数据类型:

datatype option = Apple | Orange | Melon

我想指定datatype options只接受datatype option作为其输入类型't。怎么做?

2 个答案:

答案 0 :(得分:5)

SML中没有这样的功能,也没有我听说过的任何SML方言的扩展。

您可以将更专业的版本定义为类型别名:

type option_options = option options

如果需要,你可以在模块的签名中使该类型为abstract,但这会隐藏构造函数。

答案 1 :(得分:0)

如何使用自制选项:

strobel@suse132-intel:~> sml
Standard ML of New Jersey v110.79 [built: Tue Dec 22 21:53:32 2015]
- datatype fruits = Apple | Orange | Melon;
datatype fruits = Apple | Melon | Orange
- datatype fruitopt = Nofruit | Fruit of fruits;
datatype fruitopt = Fruit of fruits | Nofruit
-