Size: a a a

PureScript — русскоговорящее сообщество

2018 July 21

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
👍
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
Также можно юзать Fix + VariantF  и получить идею eadt
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
Что за идея eadt?
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
Extensible ADT ?
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
Extensible adt
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
а в чем заключается estensibility?
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
Yura Lazarev
а в чем заключается estensibility?
В том что у тебя VariantF как базовый функтор и он открытый
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
@savage42 да, оно.
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
@xgrommx так издалека понятно, а как оно конкретно полезно на практике?
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
А значит можно делать ADT +
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
Могу скинуть простейший пример
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
С одной стороны закрытость ADT полезна когда нужно выполнить exostiveness check, компилятор больше помогает. А открытость? Примеру буду благодарен.
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
Yura Lazarev
С одной стороны закрытость ADT полезна когда нужно выполнить exostiveness check, компилятор больше помогает. А открытость? Примеру буду благодарен.
Ну ты можешь компоузить алгебры, у тебя расширяемый элиминатор будет
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
вся магия теряется когда приходится сделать инстанс для этой суммы типов (в пурсе нельзя делать инстансы для алиасов)
ну и вот когда ты завернешь свой открытый тип в ньютайп то все
и приходится делать просто инстансы для каждого типа, что у тебя в сумме, а для открытой суммы просто именнованный элиминатор (ну и еще же можно компоузить элиминаторы)
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
источник

YL

Yura Lazarev in PureScript — русскоговорящее сообщество
Благодарю!
источник
2018 July 22

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
мб интересно, ответ garyb про халоген: https://purescript-users.ml/t/questions-regarding-the-development-of-the-purescript-halogen-library/236/6
вот это ишью еще было интересно почитать https://github.com/slamdata/purescript-halogen/issues/138
бенчмарки https://rawgit.com/krausest/js-framework-benchmark/216615b080bbadd6e02518451500995858e76c75/webdriver-ts-results/table.html (в самом конце справа там)
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
а как внутри do-нотации для Either сделать guard или что-то подобное? Он не имплементит MonadZero

Получилось только так:

someFunc :: .. ... -> Either String ...
someFunc = do
   val1 <- Map.lookup .. .. # note "Not found"
   val2 <- Map.lookup .. .. # note "Not found"
   _ <- if (val1 == val2) then pure unit else Left "Not equal"
   pure $ ...
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
Anton Kotenko
а как внутри do-нотации для Either сделать guard или что-то подобное? Он не имплементит MonadZero

Получилось только так:

someFunc :: .. ... -> Either String ...
someFunc = do
   val1 <- Map.lookup .. .. # note "Not found"
   val2 <- Map.lookup .. .. # note "Not found"
   _ <- if (val1 == val2) then pure unit else Left "Not equal"
   pure $ ...
when?
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
@xgrommx when (val1 == val2) $ do ... pure myThing ругается на то, что myThing не Unit
источник