Size: a a a

2020 May 25

PG

Pig Greenest in pro.elixir
пойти в чат к хаскеллистам и спросить
источник

VS

Vladimir Sekisov in pro.elixir
можете Debug.trace вставить
в последовательность
источник

AR

Andrew Rudenko in pro.elixir
Andrew Rudenko
ну это ж как в квантовой физике. наличие наблюдателя (может) изменяет поведение )
.
источник

PG

Pig Greenest in pro.elixir
unsafeIO да, наблюдение за рантаймом -- нет
источник

AR

Andrew Rudenko in pro.elixir
кароче
источник

AR

Andrew Rudenko in pro.elixir
import Debug.Trace

plus a b = trace ("Compute " ++ show a ++ " " ++ show b) (a + b)

fibs = 0 : 1 : zipWith (plus) fibs (tail fibs)

main :: IO ()
main =  do
print(take 10 fibs)
print(take 10 fibs)
источник

AR

Andrew Rudenko in pro.elixir
[0,1,1,2,3,5,8,13,21,34]
[0,1,1,2,3,5,8,13,21,34]

Compute 0 1
Compute 1 1
Compute 1 2
Compute 2 3
Compute 3 5
Compute 5 8
Compute 8 13
Compute 13 21
источник

AR

Andrew Rudenko in pro.elixir
Vladimir Sekisov
никакой тут магии нет,
тк fibs ленивый, то take
берет столько сколько нужнл
и каждый раз новое
таки нет
источник

PG

Pig Greenest in pro.elixir
у тебя два вызова рядом, конечно компилятор их в один санк соптимизирует
источник

AR

Andrew Rudenko in pro.elixir
Pig Greenest
у тебя два вызова рядом, конечно компилятор их в один санк соптимизирует
вот у тебя "конечно", а у других нет!
источник

AR

Andrew Rudenko in pro.elixir
Vladimir Sekisov
никакой тут магии нет,
тк fibs ленивый, то take
берет столько сколько нужнл
и каждый раз новое
более того, мы можем и усложнить компилятору жизнь и сделать наши fibs менее глобальными
источник

AR

Andrew Rudenko in pro.elixir
import Debug.Trace

plus a b = trace ("Compute " ++ show a ++ " " ++ show b) (a + b)

makeFibs a b = fibs
        where fibs = a : b : zipWith (plus) fibs (tail fibs)

main :: IO ()
main = do
    print(take 10 fibs)
    print(take 10 fibs2)
          where fibs = makeFibs 0 1
                fibs2 =  makeFibs 0 1
источник

AR

Andrew Rudenko in pro.elixir
вот этот код компайлер ТОЖЕ оптимизирует и запустит вычисления только один раз
источник

AR

Andrew Rudenko in pro.elixir
а вот
fibs2 =  makeFibs 1 2


уже заставит вычислиться второй раз
источник

AR

Andrew Rudenko in pro.elixir
Andrew Rudenko
вот этот код компайлер ТОЖЕ оптимизирует и запустит вычисления только один раз
такое в кложе не прокатит!
источник

PG

Pig Greenest in pro.elixir
хаскель умный)
источник

VS

Vladimir Sekisov in pro.elixir
вот, может уже в один из трех спецчатов по хаскелл, etc, по этой теме.
Я к тому, что там 20 человек
с энтузиазмом обсосут
этот fibs на разные мотивы
и результат будет достигнут
источник

LL

Lama Lover in pro.elixir
Vladimir Sekisov
вот, может уже в один из трех спецчатов по хаскелл, etc, по этой теме.
Я к тому, что там 20 человек
с энтузиазмом обсосут
этот fibs на разные мотивы
и результат будет достигнут
> 20 человек
> с энтузиазмом обсосут
> этот fibs на разные мотивы

А есть ссылка на этот чат?
источник

PG

Pig Greenest in pro.elixir
источник

AR

Andrew Rudenko in pro.elixir
Vladimir Sekisov
вот, может уже в один из трех спецчатов по хаскелл, etc, по этой теме.
Я к тому, что там 20 человек
с энтузиазмом обсосут
этот fibs на разные мотивы
и результат будет достигнут
Какая то смена топика. Магия есть, ленивые вычисления списков хаскель кеширует, во всяком случае в таких примитивных кейсах, proved
источник