В чем разница между магазином Comonad и представимым магазином Comonad в функциональном программировании? - PullRequest
0 голосов
/ 25 января 2019

Представительный магазин Comonad и Магазин Comonad предлагают аналогичные функции ... Когда мы должны использовать один над другим, и каковы преимущества?

1 Ответ

0 голосов
/ 25 января 2019

Для справки, вот краткий обзор того, что они из себя представляют:

class {- ... => -} Representable f where
    type Key f
    -- ...

data RepStore f a = RepStore (Key f) (f    a)
data    Store s a =    Store s       (s -> a)

Обратите внимание, что, в частности,

instance Representable (s -> a) where
    type Key (s -> a) = s
    -- ...

, и поэтому мы имеем непосредственно, что Store s и RepStore (s ->)в значительной степени полностью взаимозаменяемы.В другом направлении теория категорий учит нас, что все Representable функторы изоморфны функциям (с их Key в качестве области), следовательно, RepStore f и Store (Key f ->) изоморфны.

В итоге:в большинстве случаев не имеет значения, какой вы выберете.Если вы все равно планируете использовать его только для функций, вы также можете использовать Store и извлечь выгоду из его синтаксической легкости;если вы хотите использовать некоторый представимый функтор, который не совсем функции (скажем, запомненные функции или что-то в этом роде), то RepStore является подходящим обобщением.

...