HI9+
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.
Overview
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.
Instructions
H
prints the messagehello, world
I
prints the interpreter's source code. (If the code is compiled, it simply printsI can't bel1eve 1t's not qu1ne!
instead.)9
prints the lyrics to "99 bottles of beer."+
increases the accumulator.
Instructions are case-insensitive as in HQ9+. Invalid instructions are no-ops.
Quines
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, world
is a quine. - If the interpreter's source code contains one
I
and 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
IQ
, thenIQ
is a valid quine in both that variant of HI9+, and in HQ9+.