Size: a a a

2021 April 01

JS

Jerzy Syrowiecki in Haskell
эк
источник

AA

A64m AL256m qn<co... in Haskell
> unsafeCoerce Nothing == Data.Sequence.empty
True
> unsafeCoerce (Just True) == Data.Sequence.singleton True
True
источник

YS

Yan Shkurinskiy in Haskell
жестко
источник

AA

A64m AL256m qn<co... in Haskell
ну потому что
data FingerTree a
   = EmptyT
   | Single a
-- дальше не важно уже у мейби два конструктора
   | Deep {-# UNPACK #-} !Int !(Digit a) (FingerTree (Node a)) !(Digit a)
источник

L

Lierdakil in Haskell
Alexander Luzgarev
Вспоминают в основном в контексте «так уже никто не делает»
Да ну не совсем. Про грамматики, парсеры, кодогенерацию (не считая что трёхадресный код довольно бесполезный), управление памятью на базовом уровне и местами про оптимизацию там есть умеренно актуальные вещи. Как минимум без понимания которых понять как нынче принято -- сложно. Другой вопрос что изложение оставляет желать лучшего и про типы там почти совсем ничего нет.
источник

KV

Kirill Valyavin in Haskell
Чё в итоге делают чтобы не текли всякие стримы из-за шаринга? oneShot втыкают и рады?
источник

AA

A64m AL256m qn<co... in Haskell
нет
источник

AA

A64m AL256m qn<co... in Haskell
ничего нельзя сделать чтоб материализующиеся стримы не текли из-за шаринга
ну можно с линтипами, но технически это будут менее мощные стримы на которых некоторые операции не работают
источник

K

Kir in Haskell
[BRM]White Rabbit
Насколько я знаю, для контейнеров аппликатив легко доказывается
Из Set нельзя сделать Functor, а без него нельзя Applicative. Я удивлён, что Foldable не требует функтора, если честно
источник

AA

A64m AL256m qn<co... in Haskell
собственно по этой причине нематериализующиеся стримы типа стримли или тех что в векторе и в тексте и существуют, у них "течет" время
источник

KV

Kirill Valyavin in Haskell
A64m AL256m qn I0
ничего нельзя сделать чтоб материализующиеся стримы не текли из-за шаринга
ну можно с линтипами, но технически это будут менее мощные стримы на которых некоторые операции не работают
А почему. Можно же проаннтотировать функцию "dude trust me используется только один раз", чтобы не сработали оптимизации, при этом всё равно использовать несколько раз, без шаринга
источник

AA

A64m AL256m qn<co... in Haskell
ну так шаринг у них это фича. они его используют чтоб не пересчитывать и асимптотика таким образом не портилась при рекурсии или чтоб файл по два раза не перечитывался после зипа
источник

AA

A64m AL256m qn<co... in Haskell
т.е. нельзя сделать стримы которые одновременно
1) позволяют и дропать и досрочно останавливаться
2) не текут
3) не влетают на квадрат или хуже на ровном месте

токо любые два из трех
источник

AA

A64m AL256m qn<co... in Haskell
причем, насколько я понимаю, не доказано что нельзя, возможно просто тупые программисты не придумали еще
источник

AA

A64m AL256m qn<co... in Haskell
но именно поэтому существуют и используются три разновидности стримов
источник

MP

Misha Puzanov in Haskell
а что такое default () в начале модуля под импортами?
источник

AA

A64m AL256m qn<co... in Haskell
Misha Puzanov
а что такое default () в начале модуля под импортами?
указывает какой тип по умолчанию использовать когда надо мономорфировать код
источник

MP

Misha Puzanov in Haskell
то бишь default () = default AnyConstraint ()?
источник

AA

A64m AL256m qn<co... in Haskell
Prelude> Data.Monoid.mempty
()
источник

JS

Jerzy Syrowiecki in Haskell
Kir
Из Set нельзя сделать Functor, а без него нельзя Applicative. Я удивлён, что Foldable не требует функтора, если честно
чтобы разобрать структуру, функтор не нужен. чтобы собрать, нужен, но это уже Traversable
источник