The Boston Diaries

The ongoing saga of a programmer who doesn't live in Boston, nor does he even like Boston, but yet named his weblog/journal “The Boston Diaries.”

Go figure.

Sunday, Debtember 27, 2015

INRAC, the mind bending implementation language of Racter

I found another reason why splitting the test from the conditional in INRAC (the language Racter is written in) was a good idea with these lines:

X ?40= /# Are you continuing $40 <'s interview? #
X /# ??  ?no,not,don't /# #*2DIF

The test is on the first line, but the result is also used on the next line, so we need to carry the result over. I guess this means that all the comparison results will be stored in a global variable.

I found another bit of scary code:

STORY ?65= />65="%STORIES1" $65 *30first

So we compare variable 65 to an empty string, and if empty, the string “%STORIES1” is stored there. In INRAC, %STORIES1 will load file STORIES1.RAC (basically, %FOO will cause Racter to load FOO.RAC). At first, I thought $40 would just print the contents of a variable (in this case, variable 40) but no—it appears that $40 evaluates the contents as code (which may cause output; it may not).

And yes, when I managed to trigger this bit of code and checked the variables after the session, it does appear that variables are indeed evaluated as code. For example, variable 81 contained *29EB a $47 or a $48. Section 29, lines EB are:

EB Would you rather be
EB Do you prefer
EB Which do you think is better,

Variable 47 contains “novelist” and variable 48 contains “poet” so evaluating variable 81 would result in one of the following three lines:

  1. Would you rather be a novelist or a poet
  2. Do you prefer a novelist or a poet
  3. Which do you think is better, a novelist or a poet

So, getting back to variable 65 there. This loads STORIES1.RAC if it isn't set, then calls section 30, line first, which is code that will generate a little story, such as:

Suddenly Elvis chanted to Mr. Toad "my desire is enrapturing, anyhow furious and enraged scientists will speak during the time that jackals spy hawks." Mr. Toad wanted to enrage or belittle Elvis but started to speak "Dainty dogs are walking to yellow houses." Enthralling. Enrapturing. Nevertheless a jackal may hungrily chew meat and chicken a dove will wing over tomatoes and spinach by reason of the fact that theoreticians are angry. Terrifying! Concerning an electron, well Elvis may think that an electron is appalling, anyhow my dreaming will steer my essay from Elvis to neutrinos and neutrons during the time that Mr. Toad is embarrassing Elvis. Ask a question, please.

This is turning out to be one mind bending computer language …

Obligatory Picture

[It's the most wonderful time of the year!]

Obligatory Links

Obligatory Miscellaneous

You have my permission to link freely to any entry here. Go ahead, I won't bite. I promise.

The dates are the permanent links to that day's entries (or entry, if there is only one entry). The titles are the permanent links to that entry only. The format for the links are simple: Start with the base link for this site: http://boston.conman.org/, then add the date you are interested in, say 2000/08/01, so that would make the final URL:

http://boston.conman.org/2000/08/01

You can also specify the entire month by leaving off the day portion. You can even select an arbitrary portion of time.

You may also note subtle shading of the links and that's intentional: the “closer” the link is (relative to the page) the “brighter” it appears. It's an experiment in using color shading to denote the distance a link is from here. If you don't notice it, don't worry; it's not all that important.

It is assumed that every brand name, slogan, corporate name, symbol, design element, et cetera mentioned in these pages is a protected and/or trademarked entity, the sole property of its owner(s), and acknowledgement of this status is implied.

Copyright © 1999-2019 by Sean Conner. All Rights Reserved.