HI9+

From Esolang
Jump to navigation Jump to search

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 message hello, world
  • I prints the interpreter's source code. (If the code is compiled, it simply prints I 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, then IQ is a valid quine in both that variant of HI9+, and in HQ9+.