News for hackers. Stuff that matters.
Re:Write Yourself a Scheme in 48 Hours by jerf on Friday March 27, 2015 @10:30PM (#9280242)
It's possible you just need to work with it for a while. IORefs can't do anything the State type can't do in a single-threaded execution context. Nothing prevents any evaluation strategy you propose that makes sense from being adopted by Haskell.

FWIW, I recognize your confusion as something I've had myself. I worked it out in Erlang, not Haskell, but it's the same principles. Again, ignoring threading, functional programming can do anything imperative programming can do with at most a log n penalty because at worst the functional program can simply simulate a raw expanse of memory in a tree and implement mutation on top of that. What you're asking about is ultimately much simpler than that but you may just have to work with it for a while. All I can really do is assure you that no, IORefs are completely unnecessary in this case.

And again let me emphasize my sympathies with your position and that I do not mean this harshly... I am recalling where I myself was in the past. Until I worked with it for long enough for it to click I'm not sure anyone really could have explained it to me. I'd been imperating for a long time.

Re:Write Yourself a Scheme in 48 Hours by tel on Friday March 27, 2015 @11:15PM (#9280362)
I wrote a number of posts pertaining to that log n trick:

http://jspha.com/posts/mutable_algorithms_in_immutable_langu...