Бойко!
Нашёл эту самую реализацию Рефала в виде библиотеки 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.