123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- Concurrent Maze Space Transformation
- (with Authentic Interrodent Communication)
- In The HUNTER Programming Language
- It is perceived that one of the biggest problems in maintaining
- interest in programming is the above linear growth of boredom
- compared to the usefulness of the program, resulting in an
- acute loss of enthusiasm on the part of the programmers and
- ultimately the abandonment of the software.
- This document intends to address that by introducing a language
- with new models for sharing, flow control, and data manipulation,
- which make all dependencies in a program globally accessible and
- radically oblique at the language level.
- We introduce the language, which is a deterministic particle
- automaton based on mazespace-rewriting and critter-style message
- passing and, being ASCII art, is inherently graphical in notation...
- The HUNTER Programming Language
- (c)2000-2002 Cat's Eye Technologies. All rights reserved.
- Each HUNTER program consists of a two-dimensional Cartesian-grid
- playfield of any reasonable arbitrary size. Each square in this
- grid is called a cell. Each cell may contain one of several
- things, or be considered 'empty'. It may also contain a mouse,
- which is a particularly special kind of thing. However, a mouse
- must start in an otherwise empty square.
- Mice are particularly special because they have agency. Unlike
- walls and pieces of cheese, they do things. Primarily, they move
- around. They do so at runtime.
- The deterministic fashion a mouse moves around - always checking
- east, then north, then west, then south, in each cell - and its
- memory (each mouse keeps a 'map' of where it's been in it's head
- and tries not to backtrack unless there is nowhere else new to
- go) ensures that, given some time, and all other things being
- equal, a mouse will traverse it's entire environment and will
- return to where it started. The process then repeats, holding
- the mouse in a state of perpetual live lock.
- However, not all other things may be equal. Indeed, the mouse
- may nibble on a bit of strychnine and die. Or, other mice may
- be concurrently tranversing the same maze, and two mice may not
- share the same space, so they may block each other's progress.
- Mice may not move through walls but they may move through empty
- space and on top of items found in the playfield, possibly
- altering them (see below.)
- Execution ends when all mice are dead.
- An example HUNTER program might be:
- ########
- # 1#2#
- # #### #
- # #
- # ######
- # m#
- #+######
- # !#
- ########
- where
- # indicates a wall
- m indicates a mouse
- the digits 0 to 9 represent types of cheese
- 0 = cheddar
- 1 = american
- 2 = swiss
- 3 = gouda
- 4 = mozzarella
- 5 = farmer
- 6 = blue
- 7 = gorgonzola
- 8 = feta
- 9 = bat's-milk
- ! indicates a bit of strychnine
- + indicates a pinwheel
- . indicates a mouse turd
- w indicates a dead mouse carcass
- other characters indicate other miscellaneous objects
- apropos to being in a maze, with undefined semantics,
- so they should be considered reserved
- Intermouse communication is done by mouse droppings. A mouse
- can leave a message to some other mouse by creating a mouse
- dropping where it currently is (assuming it has previously
- eaten a piece of cheese.) Other mice can detect mouse
- droppings and change their behaviour based on them.
- How mice create droppings is defined by how each mouse is
- trained. These mice are somewhat magical in that they can
- be trained to perform physically improbable tasks, such as
- turning one kind of cheese into another.
- Mice are trained globally by the mazespace-rewriting
- rules. These are the guidelines by which rodents live their
- lives. Each rule must be on a line by itself and has the
- following form:
- *things>droppings
- For example,
- *12>21
- Then, when a mouse encounters a piece of American cheese,
- followed by a piece of Swiss cheese, it will eat them and
- excrete a bit of Swiss cheese followed by a bit of American
- cheese. This is just an example.
- Mice will eat cheese but will not eat mouse droppings,
- pinwheels, or other inedible items.
- Specifying strychnine, walls, or mice on the left-hand side
- of a rewriting rule is not guaranteed to be able to produce
- a match. The behaviour of specifing mice on the right-hand
- side of a rewriting rule is undefined.
- Chris Pressey
- Winnipeg, Manitoba, Canada
- Original Oct 24 2000
- Revised for clarity Jan 26 2002
|