Implementeer een algebraïsch data type Tree om binaire
zoekbomen1 voor te stellen.
Maak je boom data type een instantie van de Eq en Show typeklassen.
Voorzie een functie empty die een lege boom teruggeeft.
Definieer insert en search over je boom, die respectievelijk
een element toevoegen aan de boom (dubbele elementen zijn niet
toegestaan) en opzoeken of gegeven element in de boom aanwezig is.
Voorbeelden:
> insert 5 empty == insert 5 (insert 5 empty)
True
> search 3 $ insert 5 $ insert 6 $ insert 4 $ empty
False
Vergeet niet dat het hier gaat om een binaire zoekboom. De orde op de
elementen kan voorzien worden door
Ord2.
Een type met klasse Ord heeft ondersteuning voor de functies <, >,
<=, >= en compare, en als uitbereiding van Eq ook == en /=.
Maak je boom een instantie van de Functor typeklasse. Merk op dat het aanroepen van sommige functies de ordening ongedaan kan maken.