Size: a a a

2020 May 25

АЮ

Андрей Юнми... in pro.elixir
источник

АЮ

Андрей Юнми... in pro.elixir
И там даже в ридми есть пример такого кода. Хех.
источник

VS

Vladimir Sekisov in pro.elixir
Alex Bubnov
вот кстати про хаскель - я опять забыл, там кэшируются результаты вычисления thunk-ов?
нет, не кешируются,
если только специально
сгенерировать последовательность ленивых значений, а потом
разворачивать из нее сколько надо
источник

VS

Vladimir Sekisov in pro.elixir
Pig Greenest
хаскель в этом плане довольно специфичный язык, во всех строгих/тотальных языках стримы и списки это разные сущности
та и в хаскел также,
ленивый не обязательно список, ленивое все,
без ленивости нормальную
схему рекурсии не сочинить,
чтобы мозги не вскипели
при работе с ней.
источник

PG

Pig Greenest in pro.elixir
понятно что все ленивое, но нету же в библиотеке стандартной отдельного data Stream a = SCons a (Stream a)
источник

AB

Alexey Bolshakov in pro.elixir
Хаскель... у меня даже наклейка есть
источник

AB

Alexey Bolshakov in pro.elixir
источник

AR

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

откуда это утверждение? вот в контексте обсуждения:

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


take 10 fibs
take 10 fibs

что сделает GHC?
источник

AR

Andrew Rudenko in pro.elixir
два раза вычислит?
источник

AR

Andrew Rudenko in pro.elixir
ведь вряд ли (а как проверить, хаха)
источник

PG

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

VS

Vladimir Sekisov in pro.elixir
неудобно будет, слишком
часто используемый тип данных,
хотя для представления списка на уровне типов
еще недавно так делали,
пока promotion не добавили
в 8-ке
источник

AR

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

PG

Pig Greenest in pro.elixir
Andrew Rudenko
> нет, не кешируются,

откуда это утверждение? вот в контексте обсуждения:

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


take 10 fibs
take 10 fibs

что сделает GHC?
а вот если ты напишешь
let foo = take 10 fibs in
let bar = take 10 fisb in ...

то GHC может увидеть что это один и тот же thunk и вычислить его только один раз, если вообще будет необходимость
источник

VS

Vladimir Sekisov in pro.elixir
Andrew Rudenko
два раза вычислит?
ага
источник

AR

Andrew Rudenko in pro.elixir
да вот нифига же
источник

AR

Andrew Rudenko in pro.elixir
Pig Greenest
unsafeIO 😈
это вроде как такая типичная проблема хаскеля. оно до фига умное, но понять и предсказать, что ИМЕННО будет выполнено чертовски сложно
источник

VS

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

VS

Vladimir Sekisov in pro.elixir
Andrew Rudenko
это вроде как такая типичная проблема хаскеля. оно до фига умное, но понять и предсказать, что ИМЕННО будет выполнено чертовски сложно
немного поивычки и все другое уже будет казаться
извращением, типа как можно путать чистый код
с эффектами - гадость,
не поддерживаемо
источник

AR

Andrew Rudenko in pro.elixir
> и каждый раз новое

официально заявляю сомнение! как проверить?
источник