voidex (voidex) wrote,
voidex
voidex

Categories:

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

  • ghc-mod 1.11.5

    Немного пропатчил ghc-mod, теперь он умеет вот так: ghc-mod browse -d -o Data.Either Left Right data Either a b either :: (a -> c) ->…

  • SublimeHaskell: Go To Declaration

    Добавил ещё несколько фич: Go to declaration (ctrl+shift+r по слову) Go to any declaration — команда выводит список всех деклараций во всех…

  • SublimeHaskell

    Доделал, что хотел, вот список фич: Поддержка cabal-dev Поправлено куча ошибок с чтением настроек из других потоков * Можно переключаться на ходу…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    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