HI9+ is a derivative of HQ9+ created by User:Rdococ. Rather than having a quine command, rdococ thought it would be more useful if there was an interpreter command that printed the source code of the interpreter. Thus, the I.
Take this quote from HQ9+:
- Although the language is not of serious interest by itself, it can be useful to implement HQ9+ in a new esoteric programming language, since doing so proves that all the tasks above, except the quine, are possible.
HI9+ fixes the quine issue, so an implementation of HI9+ in a new esoteric programming language proves that the quine is possible in that language. The language may still be unable to quine at an arbitrary point.
Hprints the message
Iprints the interpreter's source code. (If the code is compiled, it simply prints
I can't bel1eve 1t's not qu1ne!instead.)
9prints the lyrics to "99 bottles of beer."
+increases the accumulator.
Instructions are case-insensitive as in HQ9+. Invalid instructions are no-ops.
HI9+ can be thought of as having infinite variants depending on the interpreter's source code and what
I prints. Each variant may have different conditions for outputting a quine or no non-trivial quine at all.
- The empty program is always a quine.
- As in HQ9+,
hello, worldis a quine.
- If the interpreter's source code contains one
Iand no other valid HI9+ instructions, the same code will produce a quine in HI9+.
I can't bel1eve 1t's not qu1ne!is also a quine if a compiler is used instead of an interpreter. This is ironic, given the content of the statement.
- If the interpreter's source code is
IQis a valid quine in both that variant of HI9+, and in HQ9+.