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
Ord
2.
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.