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.

REFAL 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 and application.

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 language.

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 language.

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.