thedeemon: (Default)
[personal profile] thedeemon
Вопрос знатокам и любителям языков с нестрогой семантикой. Вот код на Clean с созданием массива с помощью array comprehension. Сколько раз будет вызвана функция f?

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. :)

Date: 2011-12-06 08:23 pm (UTC)
From: [identity profile] max has (from livejournal.com)
очень интересно, а как массивы укладываются в чистый ФП язык Clean. мутабельность, время доступа по индексу. в хаскеле Data.Array.IO т.е. не в мире чистых функций.

Date: 2011-12-06 10:40 pm (UTC)
From: [identity profile] nponeccop.livejournal.com
Uniqueness typing

Date: 2011-12-07 02:41 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Вот тут про них подробно:
http://thedeemon.livejournal.com/37515.html

Profile

thedeemon: (Default)
Dmitry Popov

February 2026

S M T W T F S
12 34567
891011121314
15161718192021
22232425262728

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 3rd, 2026 11:30 pm
Powered by Dreamwidth Studios