Difference between revisions of "Talk:Compose"

From HaskellWiki
Jump to: navigation, search
m
(simplified standard solution)
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/>
<code>
 
  +
<haskell>
 
composeArrow :: [a -> a] -> a -> a <br/>
 
composeArrow :: [a -> a] -> a -> a <br/>
 
composeArrow = foldr ((>>>) . arr) (arr id)
 
composeArrow = foldr ((>>>) . arr) (arr id)
</code>
+
</haskell>
   
 
<br>Or maybe this:<br>
 
<br>Or maybe this:<br>
<code>
 
  +
<haskell>
 
composeArrow :: [a -> a] -> a -> a
 
composeArrow :: [a -> a] -> a -> a
 
composeArrow = foldl ((>>>) . arr) returnA
 
composeArrow = foldl ((>>>) . arr) returnA
</code>
+
</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?

Revision as of 12:45, 22 October 2006

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

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?