Alya Refal interpreter

in-alphabet (s.x) e.A1 s.x e.A2 -> 'T';
in-alphabet e.o -> 'F';

& 'TT' -> 'T';
& e.o -> 'F';

is-digit s.x -> <in-alphabet (s.x) '0123456789'>;

is-number s.x -> <is-digit s.x>;
is-number s.x e.t -> <& <is-digit s.x> <is-number e.t>>;

= {Initial view field is marked with '='}
<is-number '1234'>

Download

Refal is an interpreted programming language which is suitable for symbolic computations. It was created by Valentin Turchin in 1968.

This implementation was started because Refal-5, which is the only implementation which worked on my Linux machine, is died and even proprietary. Also, it is semi-compiled (similar to Java), which is not convenient nor useful in practice, as there is no real Refal programs which require such optimizations.

Alya have some differences from it, such as sentence-based syntax.

Short syntax description is provided in README file. Also, some examples are located in examples/ subdirectory.

There is a book about Refal-5, which gives the basics of Refal programming.

Supported features

  • Execution of single-file programs
  • REPL
  • IO functions on stantard input and output, command line parameters
  • verbose execution (non-interactive debugger)

What will be added in later versions

  • Arithmetic functions
  • Disk file IO, as well as stderr
  • Functions for adding new program sentences in run time
  • Modules

Why it is named so?

I had this Alya is mind :-)

Also, it stands for ``Yet Another RefAL''. The syllables are reversed as in ``REFAL'' itself, which stands for ``Algorithmic Language of REcursive Functions''.