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:09 pm (UTC)
From: [identity profile] max630.livejournal.com
А что, у clean достаточно жив чтобы к нему можно было такие требования предъявлять?

Profile

thedeemon: (Default)
Dmitry Popov

February 2026

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

Most Popular Tags

Style Credit

Expand Cut Tags

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