Re: Лямбда-исчисление в рефале.


Subject: Re: Лямбда-исчисление в рефале.
From: Sergei M. Abramov (abram@botik.ru)
Date: Mon Aug 27 2001 - 14:38:12 MSD


День добрый, Михаил!
День добрый, всем!

> С моей точки зрения очень неестественно то что в функциональном языке
>не поддерживается лямбда-исчисление. Может это выглядет как попытка
>сделать из рефала haskell, но я решил расширить рефал в порядке
>эксперемента. В общем то добавилась всего одна существенная конструкция (и
>одна дополнительная для оптимизации) и расширилась семантика функции Mu.
>Я добавил к существующим типам (символ, целое и терм) еще один -
>замыкание (closure). Синтаксис естественный
>Adder {
> s1 = { s2 = <Add s1 s2>; };
>}
....

Думаю, в реальной системе придется больше синтаксически разносить между собою
блок {...} и замыкание. Так же, как в Хаскелле пришлось разнезносить (...) и (\
...).

Возможно синтаксис рефала не развалится, если в него добавить примерно такое же:
{\ ... }.

А по сути:

=1= Надо или нет добавлять замыкания в Рефал? Думаю можно--язык
    от этого не обеднеет.

=2= Усложнит ли это суперкомпиляцию? Смотря о какой
    суперкомпиляции идет речь.

    Я бы аккуратно посмотрел бы, каким в таком расширенном
    рефале становится state (соостояние вычисления), а затем
    посмотрел бы, какой для этого state нужна conf. После чего и
    можно будет оценить, насколько все усложнтся (или упростится?).

Всего доброго,

Сергей

>P.S. Исходный текст этой эксперементальной реализации лежит
>http://pm.kmost.express.ru/~pm/hrefal.tgz
>Слиль в них плохой (первая моя программа на haskell), но
>поэксперементировать можно. Накоплю опыта, я ее с нуля перепишу.

Внушает!

Я уже 3 недели себя психологически готовлю к счастью (к Happy) и все никак не
могу решиться освоить лексеры/парсеры на Хаскелле. А тут в первом же Вашем
опыте вижу:

Makefile:
...
   Parser.hs: Parser.y
     happy -a Parser.y
...



This archive was generated by hypermail 2b25 : Mon Oct 25 2004 - 21:24:59 MSD