
Yes, although you should use an actual infinite list type if you're depending on that. I know, I just wanted to stick with the basic list type for the sake of the discussion.
In fact, the Stream package provides an infinite list type with Applicative and Monad instances. I didn't know that, but now that I checked it out, it is indeed the same thing.
Really, you're better off just using Nat -> a. The primary advantage to using a list over a function is avoiding recomputation, but nothing is getting recomputed here. Well, at least streams can be made efficient in the absence of bind, as opposed to functions, but I see your point. After all, that's the problem with bind: it receives a function, which has no visible internal structure, so it can only grow as you combine it with other things...
Gergely -- http://www.fastmail.fm - A no graphics, no pop-ups email service