Size: a a a

2021 June 05

O

Ortofax in Haskell
разве призмы вводят имена в контекст?
источник

к

кана in Haskell
не оч понимаю что это значит
источник

O

Ortofax in Haskell
значит, что новые имена становятся доступны
источник

O

Ortofax in Haskell
например `(x : xs)`вводит в контекст имена x и xs
источник

к

кана in Haskell
патмач вводит имена
источник

к

кана in Haskell
f (preview _Cons -> Just (x, xs)) = _Cons # (x, xs)
это
f (x:xs) = x:xs

для
_Cons = prism' (uncurry (:)) \case
 x:xs -> Just (x, xs)
 _ -> Nothing

pattern (:::) :: a -> [a] -> [a]
pattern x ::: xs <- (preview _Cons -> Just (x, xs))
 where x ::: xs = _Cons # (x, xs)

f (x ::: xs) = x ::: xs
источник

к

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

O

Ortofax in Haskell
ладно, какой призме изоморфен паттерн (x :: _)?
источник

O

Ortofax in Haskell
этот паттерн однонаправленный
источник

к

кана in Haskell
тогда траверсалу просто, раз однонаправленный
источник

к

кана in Haskell
_head, уже готовая
источник

JS

Jerzy Syrowiecki in Haskell
если убрать требование первого класса, то точно так же, как выражения — x : xs :: [a], призмы не нужны
источник

JS

Jerzy Syrowiecki in Haskell
@kana_sama переусложняет
источник

к

кана in Haskell
не понимаю
источник

к

кана in Haskell
там вся задача в первоклассности
источник

JS

Jerzy Syrowiecki in Haskell
как я понял, вопрос про типизацию образца
источник

JS

Jerzy Syrowiecki in Haskell
а про первоклассность товарищ нечаянно упомянул
источник

к

кана in Haskell
ну, у меня раньше возникал похожий вопрос именно про первоклассность
источник

к

кана in Haskell
мол почему в хаскеле конструкторы не первоклассны как минимум
источник

¯

¯\_(ツ)_/¯ in Haskell
как можно (123 :: Word32) поднять до уровня типов?

вообще задумка такая. есть пакет binary, у которого есть тайпкласс Binary, с помощью которого можно (де)сериализовать значения.

Я хочу написать что-то такое:
data Packet = Packet { code :: MatchValue (0xFF :: Word32), body :: ...} deriving Generic

если значение code совпадёт, то данные продолжат парситься, иначе fail. Вопрос --- как реализовать MatchValue?
источник