-- 各モジュールはファイル名を「モジュール名.hs」として保存 module Mark ( Mark(..), isEmpty, next ) where -- Mark(..) データ型名とその構築子名をエクスポート -- Mark データ型名のみエクスポート data Mark = O -- ○,先手の印 | X -- ×,後手の印 | U -- 空き,何も置かれていない | B -- 障害物,何も置けない deriving Eq instance Show Mark where show O = "O" show X = "X" show U = "." show B = "*" isEmpty :: Mark -> Bool isEmpty = (U ==) next :: Mark -> Mark -- 手番を一つ進める next O = X next X = O