Refal is a language from the 1960s that is based on the concept of pattern-matching with many features that could be considered advanced even today- it is functional, garbage collected, and supported metaprogramming.

It was developed in Russia, much of its documentation is in Russian, and it seems to have dropped off the map with the death of its author V. Turchin in 2010.

Although it seems Refal was competitive with Lisp, and certainly seems to have brought some ideas to the table, I could find no reference to Refal having had any influence or impact on any other computing language.

Why is this? Is Refal indeed the programming language equivalent of a "language isolate"? And how could it have been so for a language that was actively developed, and apparently used, for at least 40 years?

  • 2
    Looks like in Russia there was some interest towards REFAL at least till 2016: meta2016.pereslavl.ru – DmytroL Oct 29 '20 at 19:03
  • 1
    As an attempt to answer your question: unfortunately any language that is not backed by a large corporation and/or an international committee, that does not have modern tooling, and that can hardly become popular in the English-speaking world because of lack of documentation & tutorials in English is doomed to become a "language isolate" or a very niche language at best. – DmytroL Oct 29 '20 at 19:07
  • There was this thing called the "Cold War" that covered that time - kind of made it very difficult to get technical information from Russia, cooperate academically or commercially with Russia, etc. etc. etc. And that was even if you were willing and able to cross the language barrier. N.B.: The Russians didn't encourage cooperation any more than the Americans - in fact, much less. – davidbak Oct 29 '20 at 20:35
  • @DmytroL: Ruby might be a counter-example of that: it never had any corporate backing nor backing by an organization like Apache, and early Ruby adopters in Europe and the US actually learned Japanese in order to be able to use Ruby. I admit that Ruby is an outlier, however. – Jörg W Mittag Nov 22 '20 at 20:47

The Sendmail address rewriting language used at the time when an e-mail address could include a mix of various routing notations, with its meta-variables, recursively called rulesets, and magic brackets < and > to denote the part of the string under consideration does resemble Refal somewhat.

  • Thanks for this! I am hoping for another answer- I'm hoping it's not just this. If another doesn't come in a few days, I will accept this one. – Daniel Moskovich Nov 1 '20 at 9:48
  • 1
    @DanielMoskovich I'm not sure if the notion of "regular expressions with matching parentheses" introduced in Perl some time ago, can be attributed to Refal influence, or it is just a common sense thing to do, given the demand. – Leo B. Nov 1 '20 at 10:10
  • Do you have any sources for Refal having influenced Sendmail? As far as I could determine with a quick Google search, rewrite rules would have been added to Sendmail around the height of the Cold War, so I find it unlikely that a lone programmer at UC Berkeley would have been aware of an obscure niche language whose documentation he couldn't even read. – Jörg W Mittag Nov 22 '20 at 20:44
  • 1
    I don't; it's the abundance of similarities that struck me as unlikely arbitrary. Given that Valentin Turchin, the author of Refal, came to the U. S. in 1977, started working at CUNY in 1979, and Sendmail shipped in 1983, there was plenty of time for people involved in computer science to get acquainted with his ideas. Someone who has Eric Allman's contacts, should ask him if he had heard of Refal when he developed Sendmail. – Leo B. Nov 22 '20 at 22:29
  • @JörgWMittag Refal has been introduced to the Western audience no later than 1979: [V. Turchin, "Supercompiler System Based on the Language Refal", V. Turchin, SIGPLAN Notices 14(2):46-54 (Feb 1979)]. – Leo B. Nov 22 '20 at 22:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.