169 похожих чатов

Добрый день, я запутался в линзах, помогите. Читаю вот это http://comonad.com/reader/2012/mirrored-lenses/

и почти вначале статьи:
or from a family of isomorphisms:

iso :: (a -> c) -> (d -> b) -> LensFamily a b c d
iso f g h a = fmap g (h (f a))
Почему пара (a -> c, d -> b) является изоморфизмом?
Те, я понимаю почему пара (to: a -> c, from: c -> a) является таковым - тк две функции можно связать условиями:
1. forall e: c. to (from e) == e
2. forall e: a. from (to e) == e
Но как что-то подбное можно сформулировать для (a -> c, d -> b)? У них же ведь типы никак не связанны.

8 ответов

15 просмотров

Iso (Identity a) (Identity b) a b

это такой расширенный изоморфизм, чтобы, например, сначала A x превратить в B x, потом зайти внутрь x, поменять его на y, потом вернуться на уровень выше, к B y, и поменять его обратно на A y

Анатолий-Кот Автор вопроса
TOV_MULTIMASSO
Iso (Identity a) (Identity b) a b

это частный случай, но работает ли это всегда? Те существует ли, к примеру, такой исо Iso [a] (Maybe b) a b зная функции [a] -> a, b -> Maybe b? (интуитивно нет, но я не уверен какое отношение должно быть между s t a b, чтобы две функции являлись изоморфизмом)

Анатолий-Кот Автор вопроса
Cheese Syrowiecki
корректной [a] -> a нет, но вообще почему нет?

А как тогда обратное преобразование c from построить? Те должно выполняться iso . from iso ≡ id from iso . iso ≡ id Те мы ведь не можем однозначно восстановить [a] из а.

Анатолий Кот
А как тогда обратное преобразование c from построи...

[a] -> a мы тоже не можем. но дело в другом. в документации к библиотеке lens сказано, что f . from f ≡ id from f . f ≡ id это законы. то есть если не выполняются эти условия, то построенный объект Iso не будет правильным изоморфизмом

Анатолий Кот
это частный случай, но работает ли это всегда? Те ...

такой iso будет просто незаконный бтв iso интересен в своем определении type Iso s t a b = forall p f. (Profunctor p, Functor f) => p a (f b) -> p s (f t) iso должен работать для любого профунктора, что не позволит делать никаких замыканий например, где можно сохранить часть значений, чтобы потом восстановить (поэтому не выйдет сделать [a] ~ Maybe a) iso должен работать для любого функтора, что не позволит сделать 0 или 2 фокуса, строго 1

Анатолий Кот
это частный случай, но работает ли это всегда? Те ...

Нет, какой может быть изоморфизм между [] и Maybe?

Похожие вопросы

Обсуждают сегодня

У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
что за асемблер кста?
Shvabrikk Nya
19
всем привет. реально ли понять чем в процессе занята память? delphi/linux, процесс свой
Handatros
12
Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
А где @Grinyaha уважаемый пропал?
Am Ambrion
14
This automated cryptocurrency trading system uses intelligent algorithms to buy low and sell high on leading crypto exchanges. Many users have already enjoyed significant prof...
Endu Wako
1
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Сделал краткий обзор магазина из статьи и заодно там же записал инструкцию по развёртыванию. https://www.youtube.com/watch?v=8-sE1vNk95Q (чё думаете по звуку? кое-что поменял...
Andrey K
17
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Карта сайта