data Hexagon = Hexagon { breit :: Int } data Havannah = Havannah { h_shape :: Hexagon , stones :: Array Farbe ( Set Point ) , ist_dran :: Farbe } instance Shaped Havannah Hexagon where shaped h = Havannah { h_shape = h , stones = array (Schwarz, Weiss) [ ( Schwarz, emptySet ), ( Weiss, emptySet ) ] , ist_dran = Schwarz } data Satz = Put Point | Pass | Resign instanz Zug Havannah Satz where erlaubt s z = ... next s z = if erlaubt s z then case z of (Put p) -> ...