I wouldn't call Inform 7 a programming language, so much as a DSL for entering fact-tuples into a graph database (though some of these tuples do attach "rules" [predefined functions] together using AOP join-points). When you actually need to tell it how to "make things happen", you basically break out into a separate, imperative programming language--which happens to be I7's ancestor, I6.