Jeśli nie możesz zmienić wartości zmiennej w Haskell, jak tworzysz struktury danych?

Zgodnie z tytułem.

Mam następujący kod, który tworzy binarne drzewo wyszukiwania, ale jeśli chcę go utworzyć i zmienić dynamicznie za pomocą danych wprowadzanych przez użytkownika, jak bym to zrobił, jeśli nie mogę zmienić wartości zmiennej w haskell?!?

find :: (Ord a) => Node a -> a -> Bool
find (Node val left right) s
    | s == val      = True
    | s < val       = find left s
    | s > val       = find right s

find Empty s = False

data Node a = Node a (Node a) (Node a)
              | Empty

myTree = Node "m"   (Node "a" Empty Empty)
                    (Node "z" Empty Empty)

Z góry dziękuję!

questionAnswers(3)

yourAnswerToTheQuestion