計算機科学のブログ

型の紹介 型クラスを使用する よい派生・悪い派生 比較、Eqクラス、Ordクラス

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT2(型の紹介)、LESSON 14(型クラスを使用する)、14.6(よい派生・悪い派生)のクイックチェック14-3の解答を求めてみる。

コード

data SixSideDie = S1 | S2 | S3 | S4 | S5 | S6 deriving (Eq, Ord)

instance Show SixSideDie where
    show S1 = "I"
    show S2 = "II"
    show S3 = "III"
    show S4 = "IV"
    show S5 = "V"
    show S6 = "VI"

入出力結果(Terminal, Zsh)

% ghci
GHCi, version 8.10.5: https://www.haskell.org/ghc/  :? for help
macro 'doc' overwrites builtin command.  Use ':def!' to overwrite.
(0.00 secs, 0 bytes)
(0.00 secs, 0 bytes)
Loaded GHCi configuration from /.../.ghc/ghci.conf
Prelude
λ> :load sample04
[1 of 1] Compiling Main             ( sample04.hs, interpreted )
Ok, one module loaded.
(0.03 secs,)
*Main
λ> S1 < S2
True
it :: Bool
(0.01 secs, 64,864 bytes)
*Main
λ> S1 == S1
True
it :: Bool
(0.00 secs, 61,728 bytes)
*Main
λ> S1 == S2
False
it :: Bool
(0.00 secs, 62,776 bytes)
*Main
λ> S1 /= S1
False
it :: Bool
(0.00 secs, 62,432 bytes)
*Main
λ> S1 /= S2
True
it :: Bool
(0.00 secs, 61,704 bytes)
*Main
λ> S2 < S5
True
it :: Bool
(0.00 secs, 61,720 bytes)
*Main
λ> S2 == S5
False
it :: Bool
(0.00 secs, 62,400 bytes)
*Main
λ> S2 > S5
False
it :: Bool
(0.00 secs, 62,400 bytes)
*Main
λ> :quit
Leaving GHCi.
%