現在、学校の課題でチェス ゲームを作成しており、駒が定義されています。
data Piece = Piece { piecetype :: PieceType, color :: PieceColor }
data PieceType = Pawn | Knight | Bishop | Rook | Queen | King
data PieceColor = Black | White deriving Eq
ここで、ピースを単一の文字 (キング = k、クイーン = q、ナイト = n など) として印刷する必要があります。黒いピースの場合、値はその白い値の首都です (キング = K、クイーン = Q、ナイト = N など) だから私は show の 3 つのインスタンスを作った
instance Show PieceColor where
show Black = "B"
show White = "W"
instance Show PieceType where
show Pawn = "P"
show Knight = "N"
show Bishop = "B"
show Rook = "R"
show Queen = "Q"
show King = "K"
そして3つ目が問題です
instance Show Piece where
show (piecetype, color) = show piecetype
if show color == "W"
then show piecetype
else toUpper (show piecetype)
次のエラーが表示されます(これよりも多くのことを試しましたが、このリンクによると、かなり似ているようです
Couldn't match expected type `Piece' with actual type `(t0, t1)'
よろしくお願いします、私