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


-- Schreibe die Bind Funktion, welches es einem Erlaubt 
bind :: Box a -> (a -> Box b) -> Box b


-- 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


-- Main Function to run tests
main :: IO ()
main = do
    print $ unit 10  -- Box 10