Бойко!

Нашёл эту самую реализацию Рефала в виде библиотеки C++:
http://www.croco.net/croco/papers/stolyarov_2001_a.html

Цитирую:

> Например, функция "<палиндром">, имеющая на Рефале-5 вид 
>
>      Pal {             = True;
>            s.1         = True;
>            s.1 e.2 s.1 = <Pal e.2>;
>            e.1         = False;  }
> может быть представлена на Си++ как 
>
>   LSymbol PAL("PAL");
>   LSymbol True("True");
>   LSymbol False("False");
>   RfVariable_E e_1("e.1"), e_2("e.2");
>   RfVariable_S s_1("s.1");
>   // ...
>   RFUNC(PAL) [(L)                ^ (L| True)]
>              [(L| s_1)           ^ (L| True)]
>              [(L| s_1, e_2, s_1) ^ (L| (R| PAL, e_2))]
>              [(L| e_1)           ^ (L| False)] ;


С уважением,
Александр Коновалов

-----Original Message-----
From: Александр Коновалов (офис) <[email protected]> 
Sent: Wednesday, August 8, 2018 6:44 PM
To: [email protected]
Subject: RE: Реализация REFAL/js в online варианте (Google Cloud/VDS/standalone 
javascript)

Добрый день, Бойко!

Я где-то встречал реализацию Рефала в виде DSL для C++, но сейчас я даже не 
помню, как загуглить. Выглядело это примерно так:

RefalFunction Fab;

Fab
  [ 'A' + V("ex") >> 'B' + CALL(Fab, V("ex")) ]
  [ V("sx") + V("ey") >> V("sx") + CALL(Fab, V("ey")) ]
  [ B( V("ex") ) + V("ey") >> B( CALL(Fab, V("ex")) ) + CALL(Fab, V("ey")) ]
  [ EMPTY >> EMPTY ];

Возможно, другие подписчики с этим фактом знакомы, помнят его лучше и могут 
скинуть ссылку.

С уважением,
Александр Коновалов

-----Original Message-----
From: Boyko Bantchev <[email protected]> 
Sent: Wednesday, August 8, 2018 5:37 PM
To: [email protected]
Subject: Re: Реализация REFAL/js в online варианте (Google Cloud/VDS/standalone 
javascript)

Здравствуйте все!

Хотя нет прямой связи с темой о META II, но хотелось сказать следующее.

Мне давно кажется, что было бы очень полезным реализовать Рефал или, скажем, 
какой-то идейный костяк Рефала, в виде программной библиотеки и без навязывания 
конкретного синтаксиса.  Полезность такого подхода представляется мне по 
крайней мере в таких направлениях:
    • популяризация идей Рефала и методов программирования с его помощью;
    • сочетание этих идей и методов с имеющимися в других языках;
        в частности, изучение самой этой сочетаемости;
    • широкий круг применений в решении текущих задач практики;
    • экспериментирование новыми синтаксическими формами для Рефала;
    • экспериментирование новыми библиотечными функциями для самого Рефала;
   • экспериментирование новыми идеями в семантике и в реализации Рефала.

Если реализация — на JavaScript-е, то немаловажными достоинствами являются и 
независимость от ОС, и прямая применимость к вебпрограммированию.  Что не 
исключает и самостоятельное и «серверное» применение — есть же Node.js.

Ответить