такие нестрогие
Dec. 6th, 2011 11:35 pmВопрос знатокам и любителям языков с нестрогой семантикой. Вот код на Clean с созданием массива с помощью array comprehension. Сколько раз будет вызвана функция f?
Ответ профайлера: код проработал целых 6 секунд, массив tab был создан и собран мусорщиком 10000 раз (400 мегов аллоцировав), функция f вызвана 100 миллионов раз. А чо, чистота, ленивость и referential transparency. :)
mkarr :: Int -> {#Int}
mkarr n = {tab.[j] - 1 \\ j <-[0..n-1]} where
tab :: {#Int}
tab = {f i \\ i <- [0..n-1]}
f :: Int -> Int
f x = x + 5
Start world
# arr = mkarr 10000
= arr.[9000]
Ответ профайлера: код проработал целых 6 секунд, массив tab был создан и собран мусорщиком 10000 раз (400 мегов аллоцировав), функция f вызвана 100 миллионов раз. А чо, чистота, ленивость и referential transparency. :)