Здравствуйте, hardcase, Вы писали:
H>какие задачи решает эта система макросов, для чего она нужна?
Последние новости. Сейчас работаю над хвостовой оптимизацией для enumerable comprehension (пока на залили в svn). Возможны финты типа:
def stream (n)
{
comp enumerable
{
yield n;
yieldcomp (stream (n + 1));
}
}
Кстати, работает быстрее, чем аналогичная вещь на F#
Вообще, еnumerable comprehension создает ленивую последовательность, которая вычисляется только по требованию. Иногда незаменимая вещь.
Вот, более полезный пример. Лениво возвращает список всех файлов, включая вложенные, из заданного каталога.
def filesUnderFolder (rootFolder : string) : IEnumerable [string]
{
comp enumerable
{
foreach (file in System.IO.Directory.GetFiles (rootFolder))
yield file;
foreach (dir in System.IO.Directory.GetDirectories (rootFolder))
yieldcomp (filesUnderFolder (dir))
}
}