Size: a a a

2020 December 15

R

Roman in Haskell
Roman
-- >>> let xs = lastIsFalse
-- >>> (xs !! 5) `seq` (show (take 5 xs))
-- "[True,True,True,True,True]"
как ожидается. Не берешь элемент — не форсь хвост
источник

AV

Alexander Vershilov in Haskell
Нет нельзя
источник

R

Roman in Haskell
Alexander Vershilov
Чтобы было ок нужна явная зависимость по данным, тогда не сломаешь но можно зациклиться
если хвост зависит от головы, а голова зависит от хвоста, то улетаешь в бесконечный цикл
источник

R

Roman in Haskell
Roman
если хвост зависит от головы, а голова зависит от хвоста, то улетаешь в бесконечный цикл
ну или не улетаешь, а просто не можешь отличить последний элемент от непоследнего
источник

R

Roman in Haskell
короч хз. Придумаешь как сделать лучше — с меня пирожок при случае
источник

R

Roman in Haskell
Roman
ну или не улетаешь, а просто не можешь отличить последний элемент от непоследнего
*"условно последний"
источник

AV

Alexander Vershilov in Haskell
У нас тут нет ссылочной прозрачности даже моральной, поэтому не придумаю :(
источник

KV

Kirill Valyavin in Haskell
А чего у ньютайпов нельзя строгое поле-то сделать?
источник

KV

Kirill Valyavin in Haskell
И fold' функции нет в Data.Foldable
источник

R

Roman in Haskell
Kirill Valyavin
А чего у ньютайпов нельзя строгое поле-то сделать?
у ньютайпов нельзя нестрогое поле сделать
источник

KV

Kirill Valyavin in Haskell
Так а почему??
источник

R

Roman in Haskell
потому что для нестрогих полей есть data. А newtype A — это то же самое, что A в рантайме
источник

KV

Kirill Valyavin in Haskell
А почему нельзя сделать "то же самое, что A в рантайме, только со строгостью"?
источник

KV

Kirill Valyavin in Haskell
Хочется одновременно чтобы deriving newtype, коэрсы и строгость
источник

R

Roman in Haskell
Kirill Valyavin
Хочется одновременно чтобы deriving newtype, коэрсы и строгость
data добавляет indirection, поэтому этот indirection можно сделать строгим, а можно ленивым. newtype indirection не добавляет, так что ты не можешь сделать строгим то, чего не существует

короче coerce f строга и ленива в своих аргументов ровно так же, как просто f (я же ничего не упустил?)
источник

R

Roman in Haskell
вощм заворачивай в ньютайпы и не парься насчет строгости
источник

KV

Kirill Valyavin in Haskell
В смысле "не парься", мне жалко 90% процессорного времени на сборку мусора. А не убирать не экологично!
источник

KV

Kirill Valyavin in Haskell
Вместо foldMap (... Sum Product Whatever) писать портянку с дипсеками тупо
источник

KV

Kirill Valyavin in Haskell
Короче дурацкий язык какой-то, буду учить раст
источник

KV

Kirill Valyavin in Haskell
> newtype indirection не добавляет, так что ты не можешь сделать строгим то, чего не существует

Мне не надо indirection, мне надо чтобы дипсеки в нужных местах сами вставлялись, ну или как-то так
источник