Difference between revisions of "Talk:Compose"
Jump to navigation
Jump to search
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
Reading this page got me to write an arrow version of compose. Don't know if it should be included or not since it isn't a monadic solution.<p/> |
Reading this page got me to write an arrow version of compose. Don't know if it should be included or not since it isn't a monadic solution.<p/> |
||
− | < |
+ | <haskell> |
composeArrow :: [a -> a] -> a -> a <br/> |
composeArrow :: [a -> a] -> a -> a <br/> |
||
composeArrow = foldr ((>>>) . arr) (arr id) |
composeArrow = foldr ((>>>) . arr) (arr id) |
||
− | </ |
+ | </haskell> |
+ | |||
+ | <br>Or maybe this:<br> |
||
+ | <haskell> |
||
+ | composeArrow :: [a -> a] -> a -> a |
||
+ | composeArrow = foldl ((>>>) . arr) returnA |
||
+ | </haskell> |
||
+ | |||
+ | ---- |
||
+ | |||
+ | The first version does not need the function composition, because the functions could be applied immediately. |
||
+ | This leads to |
||
+ | |||
+ | <haskell> |
||
+ | compose = flip (foldl (flip id)) |
||
+ | </haskell> |
||
+ | Shall I replace the first solution? |
||
+ | |||
+ | ---- |
||
+ | I would write: |
||
+ | <haskell> |
||
+ | compose = foldr (flip (.)) id |
||
+ | </haskell> |
Latest revision as of 10:12, 9 February 2007
Reading this page got me to write an arrow version of compose. Don't know if it should be included or not since it isn't a monadic solution.
composeArrow :: [a -> a] -> a -> a <br/>
composeArrow = foldr ((>>>) . arr) (arr id)
Or maybe this:
composeArrow :: [a -> a] -> a -> a
composeArrow = foldl ((>>>) . arr) returnA
The first version does not need the function composition, because the functions could be applied immediately. This leads to
compose = flip (foldl (flip id))
Shall I replace the first solution?
I would write:
compose = foldr (flip (.)) id