Jerzy suggested: eulerJ f' dt f0 = map snd (iterate (\(t,f)->(t+dt,f+dt*f' t f)) (0,f0) ) This is nice. Some people prefer list comprehensions over the use of `map' and `iterate': eulerK f' dt f0 = fs where fs = f0 : [ f+dt*f' t f | (t,f) <- [0,dt..] `zip` fs ] (Jerzy, you can write this on one line if you want :-) /Koen.