Oh, this is brilliant. Amazing way to frame the explanation of Inform 7’s virtues. I am personally a huge fan of I7, and I think its success in the years since this was written makes a strong case that there’s something to all this.
Another email correspondence with Andrew Plotkin, author of So Far and other Inform 6 hits, convinced Nelson that the primary unit of an IF language should really be its rules, not its objects. If a certain especially heavy object would cause the aforementioned sack to burst immediately, an Inform 6 author would have to decide whether to attach the exception code to the sack or the weighty object. In Inform 7, it would just become a few more declarations and rules, which could appear anywhere in the code
It reminds me a bit of how in CLOS methods of generic functions do not hang off of an object but can be specialised on multiple of their arguments.
I don’t always needs multimethods, but when I do and I am using a language without them, I really regret it, as the workarounds tend to be inelegant and unidiomatic.
Interesting! Someone commented on the other submission about multiple dispatch too. Part 4 of that series is about multiple dispatch and why it doesn’t really solve the problem here.
(Also interesting: I just re-read Part 5 and realized that the author ends by talking about Inform 7, I had forgotten that entirely.)
Submitted primarily because of the parts about Inform 7’s approach to language design.
Oh, this is brilliant. Amazing way to frame the explanation of Inform 7’s virtues. I am personally a huge fan of I7, and I think its success in the years since this was written makes a strong case that there’s something to all this.
Oh, wait - the article was written this month. The game was written in 2008. Got it. :)
This part:
Immediately made me think of this previous lobste.rs submission: Wizards and warriors, part five
It’s almost exactly the same example given to illustrate the same design principle.
It reminds me a bit of how in CLOS methods of generic functions do not hang off of an object but can be specialised on multiple of their arguments.
I don’t always needs multimethods, but when I do and I am using a language without them, I really regret it, as the workarounds tend to be inelegant and unidiomatic.
Interesting! Someone commented on the other submission about multiple dispatch too. Part 4 of that series is about multiple dispatch and why it doesn’t really solve the problem here.
(Also interesting: I just re-read Part 5 and realized that the author ends by talking about Inform 7, I had forgotten that entirely.)