VoidEx (voidex) wrote,
VoidEx
voidex

Kleisli + List

Возьмём Клейсли-категорию для монады Writer. Затем определим функтор такой, что
F(a) = 1 + a * F(a) -- список
F(f) = id + f * F(f)
  -- null -> null
  -- (x, xs) -> (f x, F(f) xs)

где + и * в F(f)choose и parcomp

Но в таком случае, если я ничего не путаю, не соблюдается F(f . g) = F(f) . F(g)

Действительно, возьмём f, пишущий "f" и возвращающий свой аргумент, и g — пишущий "g".
Тогда f . g допишет "fg".
F(f) [1,1,1] — "fff"
F(g) [1,1,1] — "ggg"
F(f . g) [1,1,1] — "fgfgfg"
F(f) . F(g) [1,1,1] — "fffggg"


Кто виноват и что делать?
Tags: fp, haskell, теория категорий
Subscribe
  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 8 comments