2016-04-25 14 views
3

は、Standard-MLでこのデータ型考えてみましょう:Standard-MLのデータ型で型制約を指定する方法は?

datatype 't options = Null 
        | Some of 't 

をそして私はまた、この他のデータ型を持っている:

datatype option = Apple | Orange | Melon 

私はdatatype optionsだけその入力タイプ'tとしてdatatype optionを受け入れるように指定したいと思います。これを行う方法?

+5

なぜ単に '' T 'を削除しないと、ヌル= 'データ型のオプションを送ります|いくつかのオプション '? –

+0

@AlexeyRomanov:私はものを過ぎていることを知っていた。 SMLに非常に新しい。ありがとう、本当に貴重! – 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 
- 
関連する問題