|REFAL is symbol objects manipulating language: such as texts, formulae,
programs etc. REFAL-program consists of functions which can define each other, i.e. in
recursive mode. Hence its name follows: REcursive Functions Algoritmic Language.
language was created by V. Turchin [Òóð 66] as metalanguage to
describe semantics of other languages. Later, as a result of rather effective computer implementations,
its practical applications as a programming language were discovered.
REFAL is a language which has no types. It is based on the concept of object expression
as universal data type. All arguments and all finction results are objective expressions.
Objective expressions are defined in such way, that concatenation become implicit,
concealed. More exactly, concatenation at the values level is expressed by concatenation
at the names level. This property foolows from the mane REFAL purpose as metalanguage for
descriptiom of various linguistic objects. Such property inspire the special expressive
power to another language facilities, such as patterns and result expressions.
Patterns are the powerful representative means. They provide in compact and clear form
both to write conditions for argument appearance and to divide up the argument into composite
parts. The language of REFAL patterns is lacking in any "simplifying"
restrictions, which are characteristic of other languages, that make it very simple for studying
The language for defining of REFAL finctions based on pattern and result expression
concepts is extremely simple and compact. Its minimal version had got the name BASIC REFAL
[Òóð 74]. BASIC REFAL dialect
named as REFAL-2 [Êëð 86, Êëð87] was implemented on many
types of Soviet computers and for a long time was used as de facto standard of REFAL
In the middle of 80-s V. Turchin proposed REFAL-5 language, which contains BASIC REFAL
as subset. REFAL-5 extensions change the style of programming in quality, that's why it is
possible to talk about it as about the new generation of language. There are two
implemetations of REFAL-5 now: one is executed by D. Turchin, another - by N.Kondratyev
and A.Klimov. Both of them have practically the same source language, but differ one from
another in a number of implementation peculiarities. The second is famous also under the
name REFAL-6, but it should be mentioned, that it's the name for implementation, not for
At the same time S. Romanenko developed REFAL PLUS language, based on the same
extensions in principle that ones for REFAL-5, but it had been brought to conceptual completeness.
As the mane characteristic in it we can designate the REFAL extention by unsuccess
processing facilities. Later a number of REFAL PLUS innovations, slightly modified, was transferred
by Arc.Klimov into REFAL-6 implementation. Now (1999) the work on unification of sourse
languages REFAL PLUS and REFAL-6 is going on.