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


Subject: Re: Лямбда-исчисление в рефале
From: Mike Potanin (potanin@mccme.ru)
Date: Mon Aug 27 2001 - 15:25:39 MSD


> >замыкание (closure). Синтаксис естественный
> >Adder {
> > s1 = { s2 = <Add s1 s2>; };
> >}
> ....
>
> Думаю, в реальной системе придется больше синтаксически разносить между собою
> блок {...} и замыкание. Так же, как в Хаскелле пришлось разнезносить (...) и (\
> ...).
>
> Возможно синтаксис рефала не развалится, если в него добавить примерно такое же:
> {\ ... }.
Я думал об альтернативе для {}, уж больно они некрасиво смотрятся в
конструкции <{...} ...>. Но более удачного придумать не смог. {}
используются и в стандартном with-блоке и я решил что этот синтаксис будет
привычным. Хотя переделать его не долго - в стандарт он пока не попал :-).
>
> А по сути:
>
> =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
> ...
>
Я раньше уже пользовался yacc и Java CUT, поэтому happy освоил без
проблем. Хотя я с формальными граматиками знаком очень мало (даже для
рефала мне пришлось обращаться к знакомым с ВМК, что бы понять почему
правильная программа не распознается как правильная :-)), писать парсер на
happy оказалось проще чем сразу на незнакомом haskell. Особенно приятно
было вносить изменения в граматику - те же переделки в haskell делалиь бы
с гораздо большим трудом. Но у счастья оказалась и обратная сторона.
Ошибки и даже опечатки в граматике несколько раз порождали haskell-код,
который компилировался. Вот тут то я понял как тяжело отлаживать программы
на этом языке :-). Все ошибки в собственно haskellе компилятор обнаруживал
сам.



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