такие нестрогие
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. :)