[Haskell-cafe] Code review: efficiency question

Brian Hulley brianh at metamilk.com
Mon May 1 21:08:08 EDT 2006


ajb at spamcop.net wrote:
> I suspect it depends how long the list is.  The original drawModals
> would probably be more efficient for small lists, because it doesn't
> require creating an intermediate list.  OTOH, it may well be less
> efficient for longer lists because it can't take advantage of tail
> recursion.

Thanks for pointing this out - I'd forgotten all about the impact of having 
non-tail recursion, so my original Prolog-style code was not necessarily 
more efficient anyway, since it may be cheaper to allocate list elements 
than to allocate activation records for recursion.

>> 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.
>
> This is a question that is independent of Haskell. You should ALWAYS
> write the most elegant code first, and only make it uglier if it's not
> fast enough.
> [snip]

The scales have tipped in balance of the elegant mapM_ version! :-)

Thanks, Brian. 



More information about the Haskell-Cafe mailing list