Size: a a a

2021 May 30

¯

¯\_(ツ)_/¯ in Haskell
а Get --- это State?
источник

¯

¯\_(ツ)_/¯ in Haskell
источник

¯

¯\_(ツ)_/¯ in Haskell
State
источник

TZ

Timofey Zakrevskiy in Haskell
Я в одной рабочей утилите граф зависимостей (у него есть инстанс моноида) собираю при обходе дерева зависимостей.
источник

VL

Vladimir Lopatin in Haskell
а что там против сноймана?
источник

¯

¯\_(ツ)_/¯ in Haskell
можно ли как-то сделать собственный Word32 (без костылей по-типу newtype Word32LE = Word32LE {unWord32LE :: Word32}, чтобы реализовать для него тайпкласс Binary не так, а по-другому (get = getWord32le и put = putWord32le)?

или можно переопределить и не создавать собственных Word32?
источник

к

кана in Haskell
а почему newtype тут костыль? Вроде как newtype для этого и нужен, чтобы другой инстанс определить
источник

¯

¯\_(ツ)_/¯ in Haskell
например, можно определить: data Packet = Packet { code :: Word32LE, ...} deriving (Generic) и далее сделать instance Binary Packet, чтобы самостоятельно не реализовывать Binary.  тогда при использовании данных придётся каждый раз писать unWord32LE. может, это нормально, я не знаю, если честно
источник

к

кана in Haskell
так, ничего не понял

если будет ньютайп, то так не выйдет уже что ли?
источник

к

кана in Haskell
newtype Word32LE = Word32LE Word32

instance Binary Word32LE where
 get = getWord32le
 put = putWord32le


data Packat = Packet { code :: Word32LE }
 deriving stock Generic
 deriving anyclass Binary


должно сработать точно так же
источник

¯

¯\_(ツ)_/¯ in Haskell
нет. всё получится. можно будет использовать эту структуру, но дело в том, что теперь, чтобы получить поле (меня сейчас побьют за такие определения), то надо будет написать не code packet, а unWord32LE $ code packet
источник

к

кана in Haskell
хорошо, а в чем проблема-то?)
источник

YS

Yan Shkurinskiy in Haskell
ну это нормально
источник

YS

Yan Shkurinskiy in Haskell
чтобы указать, что инстанс не дефолтный - нужно что-то дописать
источник

YS

Yan Shkurinskiy in Haskell
например, указание на ньютайп
источник

¯

¯\_(ツ)_/¯ in Haskell
а. хорошо. понял. я подумал, что было бы лучше, если бы не пришлось писать unWord32LE, но ладно. я вас понял. спасибо вам всем
источник

YS

Yan Shkurinskiy in Haskell
если его не писать (ну или что-то другое, что указало бы на ньютайп), то и не понять, что нужен не "дефолтный" инстанс, а именно инстанс ньютайпа)
источник

IO

I O in Haskell
Поигравшись с генериками можно получить что-нибудь типа

data Packet = Packet { code :: Word32, ...} 
 deriving stock Generic
 deriving Binary via Transform Packet '[ "code" `As` Word32LE ]

но я не знаю есть ли где готовое
источник

¯

¯\_(ツ)_/¯ in Haskell
да. хорошо. звучит логично. я подумал, что можно было бы с Word32LE работать точно так же как и с Word32 (т.е. не разворачивая (unwrap) значения). но ладно. от печати пары буков на клавиатуре не умру
источник

YS

Yan Shkurinskiy in Haskell
не ну можно коёрсить
источник