Size: a a a

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

2020 June 15

ЗП

Зигохистоморфный Пре... in PureScript — русскоговорящее сообщество
Anton Kotenko
Я придумал с data-типами другой способ, без тайпкласов, вроде подходит
Какой?
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Anton Kotenko
Теперь есть вопрос про линзы и призмы, как их компоузить
Есть линза, которая указывает на Map в другой структуре, как правильно сделать призму, которая по ключу будет указывать на элемент по ключу?

_getMap <<< at key работает, но создаёт линзу, а не призму
источник

ЗП

Зигохистоморфный Пре... in PureScript — русскоговорящее сообщество
Anton Kotenko
Есть линза, которая указывает на Map в другой структуре, как правильно сделать призму, которая по ключу будет указывать на элемент по ключу?

_getMap <<< at key работает, но создаёт линзу, а не призму
Линзы и призмы можно же компоузить
источник

ЗП

Зигохистоморфный Пре... in PureScript — русскоговорящее сообщество
Я делал призму, домой прийду - скину
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Зигохистоморфный Препроморфизм
Линзы и призмы можно же компоузить
Вот да, не пойму, почему не выходит
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Зигохистоморфный Препроморфизм
Я делал призму, домой прийду - скину
Спасибо!
источник

ЗП

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

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Сделал дата-тип Component action model view = Component (UI action model (view action))

и теперь могу хранить Component Action Model view с полиморфизмом по view, где может быть Html, Svg и т.п.
источник

ЗП

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

AK

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

ЗП

Зигохистоморфный Пре... in PureScript — русскоговорящее сообщество
Мб какой-то pre надо
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
_getMap :: Lens' Whole (Key /-> Item)
_getItem :: Key -> Prism' Whole Item
_getItem key = _getMap <<< at key
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Anton Kotenko
_getMap :: Lens' Whole (Key /-> Item)
_getItem :: Key -> Prism' Whole Item
_getItem key = _getMap <<< at key
Вот, компилятор говорит, что не призма получается, а Lens' Whole (Maybe Item)
источник

ЗП

Зигохистоморфный Пре... in PureScript — русскоговорящее сообщество
Anton Kotenko
_getMap :: Lens' Whole (Key /-> Item)
_getItem :: Key -> Prism' Whole Item
_getItem key = _getMap <<< at key
По моему это траверсал
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Хм, может такое быть, да
источник

ЗП

Зигохистоморфный Пре... in PureScript — русскоговорящее сообщество
Anton Kotenko
_getMap :: Lens' Whole (Key /-> Item)
_getItem :: Key -> Prism' Whole Item
_getItem key = _getMap <<< at key
Как выглядит getMap?
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Anton Kotenko
_getMap :: Lens' Whole (Key /-> Item)
_getItem :: Key -> Prism' Whole Item
_getItem key = _getMap <<< at key
Сорян, /-> собственный оператор для Map, типа как /\ для Tuple
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
_registry :: forall d c n. Lens' (Network d c n) (UUID.Tagged /-> Entity d c n)
_registry =
   lens getter setter
   where
       getter (Network { registry }) = registry
       setter (Network nwstate) val =
           Network nwstate { registry = val }
источник

ЗП

Зигохистоморфный Пре... in PureScript — русскоговорящее сообщество
Anton Kotenko
_registry :: forall d c n. Lens' (Network d c n) (UUID.Tagged /-> Entity d c n)
_registry =
   lens getter setter
   where
       getter (Network { registry }) = registry
       setter (Network nwstate) val =
           Network nwstate { registry = val }
Можно сделать через _Newtype + prop
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
тогда вроде надо Newtype дерайвить, всё время ленюсь
источник