Re: Ядро Рефал


Subject: Re: Ядро Рефал
From: Sergei Romanenko (roman@integrum.ru)
Date: Sat Nov 03 2001 - 00:01:28 MSK


> Ленивость я давно предлагою ввести в язык (в моей 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