3 ms·
I'd say you're missing the point if you think each (i.e. Enumerable-like) behavior solves the problem. This still forces an inversion of control as far as who
by bascule 14y ago
I'd say you're missing the point if you think each (i.e. Enumerable-like) behavior solves the problem.
This still forces an inversion of control as far as who is in control of writes, i.e. the IO operation drives the generation of data to write, and not the other way around. I find this incredibly annoying.
FWIW I have implemented both patterns in my own web server Reel. I definitely think It's Just A Socket (duck type) is far and away the way to go.
- lobster_johnson 14y agoRuby solves the inversion of control with enumerators (not to be confused with Enumerable): http://www.ruby-doc.org/core-1.9.3/Enumerator.html http://www.ruby-doc.org/core-1.9.3/Enumerator.html. It's similar to Python's generators and `yield`, letting you write imperative, sequential code that is executed at the behest of a caller. See randomdata's comment (http://news.ycombinator.com/item?id=4314810 http://news.ycombinator.com/item?id=4314810) above.
- arthurschreiber 14y agoYes, but enumerators are (in most cases) implemented with Fibers. So you're going to get hit with at least some performance degradation.
- bascule 14y agoThere's another way to do this: just write to the goddamn socket.