%format (abs (a)) = "|" a "|" %format power a (b) = a "^{" b "}" %format (sqrt (a)) = "\sqrt{" a "}" %format (pair (a) (b)) = "\langle" a "," b "\rangle" |power (abs (a + b)) (1/2)|, |f (abs a)|, |p (_, _) = 1|, |let a' = abs a in sqrt (a' + a)|, |fun (gun a b^27) c ++ b^^(-8)|, |abs (a, b)|, |abs (+ a * b)|, |abs ()|, |abs (a * b +)|, |f (pair (a * b) (a / b))|, |map sqrt x|. Newtype. %format (MkSet (a)) = a > newtype Set a = MkSet [a] > insert :: a -> Set a -> Set a > insert a (MkSet []) = MkSet [a] > insert a (MkSet ((b : x))) > | a <= b = MkSet (a : b : x) > | otherwise = MkSet (b : insert a x) %format (MkId (a)) = a > newtype Id a = MkId a > > instance Monad Id where > return a = MkId a {-""-} > MkId a >>= f = f a Es werden niemals zwei Klammerpaare entfernt |((e))|. %format f (a) = "\Varid{f}\;" a %format (g a) = "\Varid{g}\;" a Ja: |f (g a)| und nein: |f ((g a))|.