Re: Ядро Рефал


Subject: Re: Ядро Рефал
From: Mike Potanin (potanin@mccme.ru)
Date: Mon Nov 05 2001 - 15:00:56 MSK


On Sat, 3 Nov 2001, Sergei Romanenko wrote:

> > Ленивость я давно предлагою ввести в язык (в моей haskellной реализации
> > была ленивость термов и правого хвоста, для более сложной надо придумывать
> > сложное представление строк). Мемоизация тоже там к месту - при
> > программировании в функциональном стиле на семантику она не влияет, а
> > эффективность может поднять.
>
> Существует много разных видов ленивости и мемоизации. В Haskell намерво
> заделан только один из них. Для некоторых задач этот вариант вполне
> адекватен, а для некоторых - не очень. Другой подход - иметь в языке набор
> строительных кирпичей, из которых можно, в зависимости от потребностей,
> лепить разные варианты ленивости и мемоизации.
Это интересно. Но тогда желательно отделить реализацию ленивости и
мемоизации от кода основной программы. Это позволит создать "библиотеку
ленивостей и мемоизаций". Конечно это потребует каких то средств в языке,
но выиграш по моему будет большой. Такие программы с одной стороны могут
суперкомпилироваться существующими средствами, а с другой получают все
приимущества мемоизированных с помощью ящиков.
>
> Аналогичная история приключилась в Прологом: в него намертво забит один
> "чисто конкретный" алгоритм перебора, который адекватен в простейших
> случаях, но превращается в прокрустово ложе в более сложных. Поэтому многие
> матерые специалисты по доказательству теорем работают не не прологе, а на
> SML. При этом, сначала средствами SML конструируется некоторый вариант
> ленивости, и с его помощью реализуется перебор. При этом перебор основан не
> не бектрекинге, а на "бесконечных" списках и ленивых вычислениях.
> Подробности описаны, например, в книге "ML for the Working Programmer" by
> L.C.Paulson (Cambridge University Press).
>
> Сергей



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