by shigemk2

当面は技術的なことしか書かない

2013-03-17から1日間の記事一覧

型シノニム

[Char] と Stringは同値で、交換可能である。 これは型シノニム(型同義名)を使って実装されている -- ロッカーが埋まっているか空いているかを表す新しいデータ型 -- LockerStateを導入。また、ロッカーの暗証番号には型シノニムCodeを与えた。 -- さらに整…

自動導出4 曜日

data Day = Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday deriving (Eq, Ord, Show, Read, Bounded, Enum) -- *Main> Wednesday -- Wednesday -- *Main> show Wednesday -- "Wednesday" -- *Main> read "Saturday" :: Day -- Satu…

自動導出3 順番

-- Ordのインスタンスも自動導出が出来る -- 2つの値が同じ値コンストラクタで出来ている場合、フィールドがなければ -- 2つは等しいとされる。フィールドがあれば、フィールド同士が比較され、 -- どっちが大きいか決まる(そのときフィールドの型もOrdに属…

自動導出 2

data Person = Person { firstName :: String , lastName :: String , age :: Int } deriving (Eq, Show, Read) mikeK = Person {firstName = "Michael", lastName = "Karoli", age = 53} holgerC = Person {firstName = "Holger", lastName = "Czukay", age…

自動導出

Haskellは、特定の型クラスのインスタンス宣言を自動導出(derive)する能力を備えている。 自動導出出来る型クラスは、Eq Ord Enum Bounded Show Readである。 自作のデータ型を作るとき、derivingキーワードを使えば、Haskellがこれらの型クラスの文脈で振る…

三次元ベクトルの計算

値コンストラクタ≠型コンストラクタ data Vector a = Vector a a a deriving (Show) -- Vector a a a -> Vector a a a -> a は間違い vplus :: (Num a) => Vector a -> Vector a -> Vector a (Vector i j k) `vplus` (Vector l m n) = Vector (i+l) (j+m) (k…