top page > computer > haskell > web_lecture > for_programmer > deriving_show.html
更新日:
文責: 重城良国

deriving Show

はじめに

トランプのスートを対話環境で表示しようとすると怒られる。

% ghci suit.hs
*Main> Spade

<interactive>:X:Y:
No instance for (Show Suit) arising from a use of `print'
Possible fix: add an instance declaration for (Show Suit)
In a stmt of an interactive GHCi command: print it

「型Suitは型クラスShowのインスタンスじゃないよ」と。型クラスはあとできちんと説明するが対話環境で表示できないのは不便だ。型を型クラスShowのインスタンスにする簡単な方法を学ぶ。

型Suitを型クラスShowのインスタンスに

deriving Showを追加する。

data Suit = Spade | Heart | Diamond | Club deriving Show

deriving Showの意味は型クラスを学んでから説明する。

*Main> :reload
*Main> Spade
Spade
*Main> show Spade
"Spade"

deriving Showを使うと関数showで文字列化できるようになる。対話環境は関数showで値を表示する。

まとめ

自分で定義した型の値が対話環境で表示できないのは不便だ。簡単に型クラスShowのインスタンスにする方法を学んだ。型の定義の最後にderiving Showをつける。型クラスのあとにちゃんと説明する。

課題

  1. 日曜日から土曜日までを表現する型を対話環境で表示可能とせよ

「列挙: トランプのスートと色」へもどる 「人間と商品」へ

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics