Я не могу найти бифункторный аналог fmap.
Объяснение:
Функтор для объектов - конструктор типа данных. Тип 1_
Функтор для функций - fmap
. Тип - (a -> b) -> (fa -> fb)
Бифунктор для объектов - результат bimap f g
, где f :: (a -> a')
, g :: (b -> b')
. Тип - p a b -> p a' b'
Бифунктор для функций — ?. Тип - p (a -> b) (c -> d) -> p (a' -> b') (c' -> d')
Вот почему я думаю, что бифунктор имеет такой тип (я прав?) с некоторым примером
ОБНОВИТЬ
ОБНОВЛЕНИЕ2
p (a -> b) (c -> d) -> p (a' -> b') (c' -> d')
на изображении выше — это морфизм бифунктора в бифунктор, а также профунктор (поскольку все функции являются профункторами)
Резюме:
Я думал, что p (a -> b) (c -> d) -> p (a' -> b') (c' -> d')
— это бифунктор для функций, но это не так. Бифунктор для морфизмов bimap. Type: (a -> b) -> (α -> β) -> p a α -> p b β.
Я думал p (a -> b) (c -> d) -> p (a' -> b') (c' -> d')
что-то необычное, но это не так, это просто функция
contramap
) и ковариантна по возвращаемому типу (fmap
). Он называетсяdimap
:dimap :: (a -> b) -> (c -> d) -> p b c -> p a d
. Для типа стрелки:(a -> b) -> (c -> d) -> (b -> c) -> a -> d
(hackage.haskell .org/package/profunctors-5.3/docs/) - person Yuval Itzchakov   schedule 18.07.2018(Int, Float) -> (Id Int, Id2 Float)
, используяdimap
? - person srghma   schedule 18.07.2018fmap
) и что вы спрашиваете, что такое часть бифунктора на уровне значений. Это то, что вы спрашиваете? (Кстати, если это так, функтор для части объектов неверен. Он находится на уровне типа, и вы говорите о конструкторах данных, которые являются уровнем значений, если я правильно интерпретирую). - person David Young   schedule 18.07.2018Id
иId2
и какое отношение имеет подпись типаp (a -> b) (c -> d) -> p (a' -> b') (c' -> d')
к остальной части того, о чем вы спрашиваете)? - person David Young   schedule 18.07.2018what relation
- это на картинке - person srghma   schedule 18.07.2018bimap
. Тип -(a -> b) -> (c -> d) -> (p a c -> p b d)
. - person Will Ness   schedule 18.07.2018all products and coproducts are bifunctors
говорит о том, что ты прав. Тогда мой график неверен - person srghma   schedule 18.07.2018