module Main where -- Definiert einen simplen container für unsere Werte data Box a = Box a deriving (Show, Eq) -- Schreibe die Unit funktion, welche einen Wert in einen Container verschachtelt! unit :: a -> Box a unit x = Box x -- Schreibe die Bind Funktion, welches es einem Erlaubt funktionen des Monadischen Typen Box zu verketten bind :: Box a -> (a -> Box b) -> Box b bind (Box x) f = f x -- Schreibe eine Lift Funktion, welche eine Funtion nimmt und diesselbe funktion mit den Monadischen Werten als Eigabe und Ausgabetyp besitzt lift :: (a -> b) -> Box a -> Box b lift f (Box x) = Box (f x) -- Tests main :: IO () main = do print $ unit 10 -- Box 10