[Haskell-cafe] Code review: efficiency question
Evan Martin
martine at danga.com
Mon May 1 21:43:12 EDT 2006
I remember reading a tutorial that pointed out that you can often
avoid explicit recusion in Haskell and instead use higher-level
operators.
For your code, I think
drawModals = foldr (flip (>>)) (return ()) . map drawModal
works(?).
On 5/2/06, Brian Hulley <brianh at metamilk.com> wrote:
> Hi -
> I started off writing the following piece of monadic code:
>
> let
> drawModal :: Control -> ManagerM ()
> drawModal c = do -- details omitted
>
> -- Prolog style coding...
> drawModals :: [Control] -> ManagerM ()
> drawModals [] = return ()
> drawModals (c:cs) = do
> drawModals cs
> drawModal c
> drawModals cs
>
> then it struck me that I should have not bothered with drawModals and
> instead should just have used:
>
> mapM_ drawModal (reverse cs)
>
> However, while this looks more elegant, it is less efficient?
> In other words, how much optimization can one assume when writing Haskell
> code?
> I'm trying to get a rough idea so I can decide whether to write helper
> functions such as drawModals in future or whether I should always just use
> the most elegant code instead.
>
> Any ideas?
>
> Thanks, Brian.
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
More information about the Haskell-Cafe
mailing list