4 ms·
You can just get it off Libgen as usual: http://dl.acm.org.sci-hub.io/citation.cfm?id=2661142 http://dl.acm.org.sci-hub.io/citation.cfm?id=2661142
by gwern 9y ago
You can just get it off Libgen as usual: http://dl.acm.org.sci-hub.io/citation.cfm?id=2661142 http://dl.acm.org.sci-hub.io/citation.cfm?id=2661142
- kazinator 9y agoMan that strikes close to home! Breaking invariants when nobody observes it. I did something in this spirit in my Lisp dialect. I broke the invariant which says "no matter how you terminate a form, the unwind-protect cleanup forms get called". I broke it by introducing the concept of "absconding": leaving a scope in such a way that the local resources tied to lexical/dynamic contours are left alone. No unwinding calls are done. The justification is precisely that it is OK if the scope is later re-entered (specifically: restarted via revived continuation). The revived control then finds everything intact --- and can leave the scopes normally at which point the cleanup does take place. By doing this, I solved the problem of how to integrate continuations with scoped resource acquisition/cleanup, without the horror of dynamic-wind or its ilk.