Implementeer een algebraïsch data type Tree om binaire
zoekbomen 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
Ord.
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.