-- beteiligte Personen: data Person = Christine | Anton | Maria | Willi | Monika | Johann | Alice | Frank | Susanne | Peter | Andreas -- verheiratet-Beziehung als Funktion: ehemann:: Person -> Person ehemann Christine = Anton ehemann Maria = Willi ehemann Monika = Johann ehemann Alice = Frank -- Mutter-Kind-Beziehung als Funktion: mutter:: Person -> Person mutter Johann = Christine mutter Alice = Christine mutter Frank = Maria mutter Susanne = Monika mutter Peter = Monika mutter Andreas = Alice vater:: Person -> Person vater kind = ehemann (mutter kind) grossvater :: Person -> Person -> Bool grossvater g e | g =:= vater (vater e) = True grossvater g e | g =:= vater (mutter e) = True