2016-11-07 25 views
1

私は2種類ハスケル - 型定義

type Rotor = String 
type Reflector =[(Char, Char)] 

を持って、私はtype SimpleEnigmaは正確に3 Rotorと1 Reflectorを持って知っています。 SimpleEnigmaを定義するにはどうすればよいですか?

ありがとうございます!私たちは、タイプRotorの三つの値とタイプReflectorの一つの値を保持し、新たな代数的データ型を定義するためにdataキーワードを使用

答えて

2
data SimpleEnigma = SimpleEnigma Rotor Rotor Rotor Reflector 

。あなたはSimpleEnigma以外に値コンストラクタ(等しいの右側にSimpleEnigma)の名​​前を変更し、種類RotorReflectorの順序を変更

注意。

+0

なぜ、等号の右側に 'SimpleEnigma'が必要なのですか?この型を使用すると、何が返されますか? –

+2

左側の 'SimpleEnigma'はタイプです。右側の 'SimpleEnigma'は値コンストラクタです:http://learnyouahaskell.com/making-our-own-types-and-typeclasses#algebraic-data-types –

+0

' type'キーワードは型エイリアスを導入しますが、データコンストラクタは新しいADTを導入する。 – mnoronha