Size: a a a

2021 May 07

[

[BRM]White Rabbit in Haskell
хм
источник

[

[BRM]White Rabbit in Haskell
окей
источник

[

[BRM]White Rabbit in Haskell
Надо бы всё же прочитать Марлоу😅
источник

IO

I O in Haskell
> More specifically, a thread may be pre-empted whenever it allocates some memory, which unfortunately means that tight loops which do no allocation tend to lock out other threads (this only seems to happen with pathological benchmark-style code, however).

То есть с точки зрения юзера она конечно вытесняющая, ему явных yield/await обычно писать не надо, но под капотом кооперативная - когда тред скажет (тем что аллоцирует), тогда и вытеснится
источник

m

monagatep in Haskell
Подскажите, а как в beam-postgresql задавать автоинкрементируемые поля?

data UserT f = User { _userId :: C f Int64 ; ... } 
...
insertValues [ User bigserial ... ] -- вот это уже не работает :-/
источник

m

monagatep in Haskell
А, через default_ надо
источник

С

Сергей in Haskell
кто писал компиляторы? Как тут принято определять разные стадии компиляции? Я пишу низкоуровневый язык с goto и мне перед тем как инициализировать обращения к меткам нужно скомпилировать остальные куски кода и посчитать смещение от начала. я хочу сделать еще один тип где будут вместе и уже скомпилированные куски кода и те что еще ожидают своей стадии. это правильно?
источник

JS

Jerzy Syrowiecki in Haskell
data Stage = Read | NameResolve | TypeCheck | CodeGen
data family Program (stage :: Stage)
например
источник

JS

Jerzy Syrowiecki in Haskell
суть в том, чтобы на каждом шаге переписывать страктуру программы, возможно, меняя тип
источник

JS

Jerzy Syrowiecki in Haskell
data family позволяет сохранять общие части
источник

JS

Jerzy Syrowiecki in Haskell
HKD тоже позволяет — это другой вариант
источник

С

Сергей in Haskell
понял, спасибо
источник

JS

Jerzy Syrowiecki in Haskell
можно открытый список шагов иметь
data StageRead
data StageNameResolve
data StageTypeCheck
data StageCodeGen

чтобы независимо поддерживать разные фронтенды и бэкенды
источник

JS

Jerzy Syrowiecki in Haskell
то есть да, правильно
источник

к

кана in Haskell
недавно похожую задачу решал, но тут два типа вышло
источник

к

кана in Haskell
Переслано от кана
ну да, достаточно красиво
источник

X

XÆA-XII in Haskell
Красиво
источник

к

кана in Haskell
в реальности вышло так

data LabeledOperand
 = OperandLabel Label
 | OperandU8 Word8
 | OperandNumber Word32
 | OperandAtom Word32
 | OperandNil
 | OperandBool Bool
 | OperandBIF BIF
 deriving stock (Show)

data LabeledLine
 = LabeledLabel Label
 | LabeledComment Text
 | LabeledInstr Instruction [LabeledOperand]
 deriving stock (Show)

функция компиляции генерирует [LabeledLine], который потом конвертируется в [UnlabeledLine Word64], который потом тривиально в bytestring конвертируется
источник

X

XÆA-XII in Haskell
А как в трансформере монад StateT использовать обычный State?
источник

к

кана in Haskell
state (runState proc) :: StateT s m a
можно, где proc :: State s a
источник