Luke Maurer wrote:
> My only issue (and it is nitpicky) is that I don't really like having to
> declare an extra function (euler') in the same scope as euler. I tried
> playing with where clauses or let expressions, but I couldn't find a way to
> make GHC happy without introducing a bunch of extra variables (since I'd
> need new versions of the arguments to euler; in euler', I just used the same
> names. Also, nested "where" doesn't work as I'd like it to.) Is there, in
> fact, a more concise way to express what I'm doing?
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