class Brett b where
dran :: b -> Farbe
gewonnen :: b -> Maybe Farbe
class Brett b => Zug b z where
next :: b -> z -> Maybe b
data Maybe b = Nothing | Just b
class Shaped b s where
shape :: b -> s
shaped :: s -> b
replay :: ( Brett b, Zug b z , Shaped b s )
=> s -> [z] -> b