>>>, &&& und ***
|
Seien folgende Funktionen (Operatoren) gegeben:
|
|
(f >>> g) x = (g . f) x
(f &&& g) x = (f x, g x)
f *** g = (fst >>> f) &&& (snd >>> g)
|
?
|
Welche Typen besitzten >>>, &&& und ***?
|
|
(>>>) :: (a -> b) -> (b -> c) -> (a -> c)
(&&&) :: (a -> b) -> (a -> c) -> (a -> (b, c))
(***) :: (a -> c) -> (b -> d) -> ((a, b) -> (c, d))
|
?
|
Gilt das folgende Gesetz?
|
|
|
|
|
((f &&& g) >>> fst) x
|
= | { Definition von >>> } |
|
(fst . (f &&& g)) x
|
= | { Definition von . } |
|
fst ((f &&& g) x)
|
= | { Definition von &&& } |
|
fst (f x, g x)
|
= | { Definition von fst } |
|
f x
|
|
?
|
Gilt das folgende Gesetz?
|
|
|
|
Ja, aus Symmetriegründen
|
?
|
Gilt das folgende Gesetz?
|
|
h >>> (f &&& g) = (h >>> f) &&& (h >>> g)
|
|
|
(h >>> (f &&& g)) x
|
= | { Definition >>> und . } |
|
(f &&& g) (h x)
|
= | { Definition von &&& } |
|
(f (h x), g (h x))
|
= | { Definition von >>> } |
|
((h >>> f) x, (h >>> g) x)
|
= | { Definition von &&& } |
|
((h >>> f) &&& (h >>> g)) x
|
|