# A newbie's proud first code

**Jyrinx
**
jyrinx_list@mindspring.com

*Mon, 5 Nov 2001 17:11:39 -0800*

Well, *I* for one liked Lennart's version:
>* > How about?
*>* >
*>* > euler :: (Num a) => (a -> a -> a) -> a -> a -> [a]
*>* > euler f' dt f0 = euler' f0 0
*>* > where euler' f t = f : euler' fnext (t + dt)
*>* > where fnext = f + dt * (f' f t)
*>* >
*>* > -- Lennart
*
My attempt to use a where clause used more variables than I needed,
methinks.
But I'm skeptical about Jerzy's code:
>* GENTLEMEN! What happened to you?! Why all of you are so incredibly
*wasteful?
>* Full three (or even four...) lines for just that?
*>*
*>* Here you have a one-liner:
*>*
*>*
*>* euler f' dt f0 = map snd (iterate (\(t,f)->(t+dt,f+dt*f' t f)) (0,f0) )
*>*
*{snip}
>*
*>* Jerzy Karczmarczuk
*>* Caen, France
*
Is this likely to result in a faster program, especially what with an
optimising compiler like GHC? I mean, a one-line version is nice, but the
longer ones seem more intuitive to me. (I also play with Python, whose
philosophy is that expressiveness is more important than the absolute
minimum of code.)
Jyrinx
jyrinx@mindspring.com