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 ответов

21 просмотр

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?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта