型の紹介 型クラスを使用する Ordを実装する compare関数
入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT2(型の紹介)、LESSON14(型クラスを使用する)、14.5(Ordを実装する)、クイックチェック14-3の解答を求めてみる。
コード
data SixSidedDice = S1 | S2 | S3 | S4 | S5 | S6
instance Eq SixSidedDice where
(==) S1 S1 = True
(==) S2 S2 = True
(==) S3 S3 = True
(==) S4 S4 = True
(==) S5 S5 = True
(==) S6 S6 = True
(==) _ _ = False
instance Ord SixSidedDice where
compare S6 S4 = GT
compare S5 S4 = GT
compare S4 S4 = EQ
compare S4 _ = GT
main :: IO ()
main = do
mapM_
print
[ S4 == S5,
S4 < S5,
S4 > S5,
S4 == S4,
S4 < S4,
S4 > S4,
S4 == S3,
S4 < S3,
S4 > S3
]
入出力結果(Terminal, Zsh)
% runghc sample03.hs
False
False
True
True
False
False
False
False
True
%