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