Re[12]: Software transactional memory
От: BulatZiganshin  
Дата: 07.02.07 10:32
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, BulatZiganshin, Вы писали:


BZ>>фактически в памяти при этом сохраняется _алгоритм_ вычисления конечного списка/графа и изменение этого списка/графа, например добавление новых элементов в конец списка, не требует полного вычисления его предыдущего содержимого


AVK>Примерно так работают стандартные реализации LInQ. Там это называется deffered query evaluation.


в FP это называют lazy evaluation

AVK>Опять же, можно определенные параллели с каррингом провести.


фишка значит в следующем. когда у тебя значение функционального типа — оно в любом случае будет невычисленным, скажем хаскеловское (2+) — это функция, но никак не значение. и в любых FP языках это трактуется одинаково. разница в трактовке нуль-арных значений. в strict языках они ссразу вычисляются, в lazy — остаются представлены в памяти как формула пока их значение действительно не понадобится. вероятно, linq тоже строит нечто вроде lazy значения в памяти, и вычисляет его только по явному запросу (как и уэмулируется lazy evaluation во всех strict языках, от C++ с Boost до Ocaml)
Люди, я люблю вас! Будьте бдительны!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.