[Haskell-cafe] Short-circuiting a fold
David House
dmhouse at gmail.com
Thu Apr 5 14:19:17 EDT 2007
On 05/04/07, Kurt Hutchinson <kelanslists at gmail.com> wrote:
> Straightforward:
> > ssfold p f z = head . dropWhile ( not . p ) . scanl f z
I'd prefer find instead of head . dropWhile (not . p), making the
result type a Maybe, as this is essentially equivalent to searching
through the result of a scan for a specific value, so it should follow
find's example and use Maybe for its partiality.
> I want to see some real creativity here, so pull out all the stops.
You may also be interested in the Compose experiment [1]: a bit of fun
seeing how many different ways compose :: [a -> a] ->(a -> a) could be
defined. Most are quite silly, but the solution involving the State
monad, for example, is really quite elegant.
[1]: http://haskell.org/haskellwiki/Compose
--
-David House, dmhouse at gmail.com
More information about the Haskell-Cafe
mailing list