カードにはタイプと色があります。
data CardType = Spades | Clubs | Diamonds | Hearts
data CardColor = Black | Red
cardColor :: CardType -> CardColor
cardColor card =
case card of Spades -> Black
Clubs -> Black
Diamonds -> Red
Hearts -> Red
type Card = (CardType, CardColor)
すべてのカードの色が同じかどうかを確認したい:
allTheSameColor :: [Card] -> Bool
allTheSameColor cardList = ???
のようなライブラリ関数を使用せずにどうすればよいのでしょうfilter
か。ただし、この問題を解決する方法を深く機能レベルで理解したいので、自分で再実装することは許可されています。