Chapters:

Introduction

"...there once existed a language which perfectly and unambiguously expressed the essence of all possible things and concepts..."

Umberto Eco - /The Search for the Perfect Language/

"Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."

Linus Torvalds

"Computers are good at following instructions, but not at reading your mind."

Donald Knuth

Lisp as a computer programming language is as Latin is to English or modern day Italian. It is the second oldest high level computer language still in use, invented (or found) in the 1950’s by John McCarthy and is the most powerful and expressive programming language there is [citation needed]. Lisp comes in many shapes and forms and Sigil, the Lisp used in Eturia, is no different. It is a ’dialect’ of Lisp, as Lisp is more of an idea than a concrete thing, with all dialects looking similar, but behaving, sometimes, very differently. And like any dialect of a language, it is malleable and modifiable, something which I will show you though this document as we build our language from base principals (axioms).

The following is meant to be both an introduction and reference to Sigil. You will find an explanation of syntax, followed by a brief explanation of Eturia, the Listener and Window Manager, followed by the list of builtins, and then a set of examples that can be followed along and typed into the Eturia Listener, which can be found at:

     http://busfactor1.ca/bin/eturia/client/dev.html

This paper is intended to follow the ideas of Guy Steele in his talk/paper ’Growing a language’:

     https://www.cs.virginia.edu/~evans/cs655/readings/steele.pdf

     https://www.youtube.com/watch?v=_ahvzDzKdB0

All terms in the following text are (hopefully) defined before use.

Intended Audience

This work is intended for both beginners and professionals alike. For beginners, if they work through the exercies, should gain an understanding for all of the code and exercises given, with a little thought. Professionals may benefit in the same way, finding the material refreshing over the typical code chaos one might see at work, while learning something new and, hopefully, interesting: programming language design and implementation.

The main desire of the reader should be to learn to program. This is not a traditional programming course in any way and will teach you little on how to get a job as a programmer. But knowing what this course will teach you will benefit you for as long as you act as a programmer during your life [citation needed].

Eturia

Eturia is a (similated) computer for Computer Science Education. It is designed to be simple and limited, perfect for teaching and learning with few distractions. Although probably unfamiliar at first, it’s spartan interface can be quickly learned by any newcomer with its few and simple commands. Finally, it runs in a Web browser, so it is accessable from any location with an internet connection.

The current version of Eturia can always be found at:

      http://busfactor1.ca/bin/eturia

along with videos and other information about the project.

The Listener

There is no copy/pasting in Eturia. To enter the code, it must be typed manually into the ’Listener’. This way the code will go through your fingers and your brain, giving you a better chance of learning the concepts as you go along and build your own language in Sigil.

This ’Listener’ is like Like VI, but a bit different:

i - insert mode, allows you to type overwrite text in the buffer

? - command mode, allows you to execute the following commands

and break out of insert mode

hjkl - move the cursor left, down, up, or right (h,j,k,l)

e - evaluate lisp code

z - clear the screen

np - previous/next in history (experimental)

To type characters use ’insert’ (overwrite) mode by pressing ’i’. You can tell when you are in ’insert’ mode by the GREEN border around the console. To ’escape’ out of insert mode, press ’?’.

REMEMBER TO CLICK IN THE WINDOW TITLE BEFORE TRYING TO TYPE IN THE LISTENER.

Window Manager

   - click in title bar to focus window

   - click and drag in title bar to move window

    - middle click in title bar to remove window


Next Chapter: Syntax