The Avail Programming Language


Here may be found a collection of resources that focus on helping newcomers learn the Avail programming language.

Quick Start

Experienced programmers who want to jump right in may wish to begin with the quick start guide. It is significantly more abbreviated than the tutorials, and comprises short topical sections to get you writing methods without a large time commitment.

Expression Cookbook

Herein can be found a large — and growing! — collection of small coding questions and the Avail expressions that answer them. Every expression is provided as an Availuator expression that is ready to be copied and pasted into the Avail workbench, so you can quickly try everything out for yourself. [read more…]


Each tutorial is structured into several prominent sections:

  1. Summary: This says what the tutorial is essentially about.
  2. Prerequisites: This describes any legwork that you must do before venturing further into the tutorial in order to maximize the benefit of the tutorial. It usually directs you to other pages within the Avail site, but may occasionally link to offsite resources.
  3. Goals: This describes the purpose of the tutorial itself. In particular, it describes what you are expected to learn from the tutorial, and what you should be able to do afterward.
  4. Complete Sources: This comprises links to the various Avail source modules that together constitute the tutorial.
  5. Walkthrough: Herein relevant portions of the various Avail source modules are reiterated and interleaved with gentle explanatory text.
  6. Further Exploration: This is a collection of links to other resources that elaborate on the topics explored by the tutorial.
  7. Exercises: Here are ideas for projects that you may wish to try in order to increase your familiarity with Avail.

In order to run any of the tutorials, or try out any of the proposed exercises, you will need to set up an Avail development environment first.

The following tutorials constitute the Learning Avail series, and are intended to provide an introduction to programming in Avail. It is recommended that all newcomers to Avail begin with these tutorials, and that the tutorials be completed in the order presented below.

Learning Avail

  1. "Hello, world!": Inspired by the many such programs that have been written since the 1967 BCPL progenitor, this archetypal and obligatory introduction demonstrates how a bright-eyed programmer can greet the entire world with just a few lines of code. (N.B.: This does not actually greet the entire world, which would be quite spooky and odd. Do not fear.)
  2. Reverse Polish Notation: Discover how to build a Reverse Polish notation expression language without writing a parser, expression nodes, operand stack, or interpreter. This is a great computer science classic, except for the part where you're done coding it in three minutes.
  3. Guess the number: Guess a number within a particular range. This is another classic, and your first real exercise in Avail programming.
  4. The Hilbert Hotel: Here we introduce tuples by building a simple booking system for Hilbert's infamous Grand Hotel. Beware the endless hordes of conference goers!
  5. Fibonacci: Programmers love generating Fibonacci numbers. This topic is usually an excuse to introduce recursion, but instead we will focus on the use of lexical closures.