⚠️ Warning: This is a draft ⚠️

This means it might contain formatting issues, incorrect code, conceptual problems, or other severe issues.

If you want to help to improve and eventually enable this page, please fork RosettaGit's repository and open a merge request on GitHub.

{{collection|RCHQ9+}}{{implementation|HQ9+}} In this [[Ursala]] program, there are the following constraints:

  • Unrecognized operators or a missing input file cause diagnostic messages.
  • Since the accumulator is unreadable and has no operational consequences, its value isn't stored.
  • A line break at the end of the file, if any, is ignored.
#import std                     
#import nat                     
quantity = ~&iNC+ --' of beer'+ ~&?(
   1?=/'1 bottle'! --' bottles'+ ~&h+ %nP,
   'no more bottles'!)

verse =

^(successor,~&); ("s","n"). -[
   -[quantity "s"]- on the wall, -[quantity "s"]-,
   Take one down and pass it around, -[quantity "n"]- on the wall.]-

refrain "n" =

   No more bottles of beer on the wall, -[quantity 0]-.
   Go to the store and buy some more, -[quantity "n"]- on the wall.]-

whole_song "n" = ~&ittt2BSSL (verse*x iota "n")--<refrain "n">

#executable ('parameterized','')

rchq =

<.file$[contents: --<''>]>+ -+
   *= case~&r (
      {`h: -[Hello, World!]-!,`9: whole_song99!,`+: <>!,`q: ~&l},
      % <.'unrecognized operator: '--+ ~&rNC>),
   ~command.files; ~&itZB?/~&h.contents.&iziyQBLD <'usage: rchq [file]'>!%+-