Kleisli + List

Mar 03, 2012 12:32

Возьмём Клейсли-категорию для монады 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"

Кто виноват и что делать?

fp, теория категорий, haskell

Previous post Next post
Up