haskell-workshop/solutions/block5/bind.hs

23 lines
669 B
Haskell

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