2016-04-25 81 views
3

考虑这个数据类型在标准-ML:如何在Standard-ML中的数据类型中指定类型约束?

datatype 't options = Null 
        | Some of 't 

而且我也有这等数据类型:

datatype option = Apple | Orange | Melon 

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

+5

为什么不删除''t'写'数据类型选项= NULL |一些选项? –

+0

@AlexeyRomanov:我知道我过分的东西。 SML eheh很新颖。非常感谢,真的很有价值! – Andry

回答

5

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

可以定义一个更为特殊的版本作为一个类型别名:

type option_options = option options 

而且你可以在模块的签名式的抽象,如果你想要的,但是,将隐藏的构造函数。

+0

我想最接近的是[F *](https://www.fstar-lang.org/)中的改进类型。 –

0

这个怎么样,用自制的选项:

[email protected]:~> 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 
-