{"action":"created","issue":{"url":"https://api.github.com/repos/ambiata/p/issues/65","labels_url":"https://api.github.com/repos/ambiata/p/issues/65/labels{/name}","comments_url":"https://api.github.com/repos/ambiata/p/issues/65/comments","events_url":"https://api.github.com/repos/ambiata/p/issues/65/events","html_url":"https://github.com/ambiata/p/pull/65","id":127852880,"number":65,"title":"BifunctorTrans type class","user":{"login":"jystic","id":134805,"avatar_url":"https://avatars.githubusercontent.com/u/134805?v=3","gravatar_id":"","url":"https://api.github.com/users/jystic","html_url":"https://github.com/jystic","followers_url":"https://api.github.com/users/jystic/followers","following_url":"https://api.github.com/users/jystic/following{/other_user}","gists_url":"https://api.github.com/users/jystic/gists{/gist_id}","starred_url":"https://api.github.com/users/jystic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jystic/subscriptions","organizations_url":"https://api.github.com/users/jystic/orgs","repos_url":"https://api.github.com/users/jystic/repos","events_url":"https://api.github.com/users/jystic/events{/privacy}","received_events_url":"https://api.github.com/users/jystic/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2016-01-21T06:05:53Z","updated_at":"2016-01-21T22:14:30Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ambiata/p/pulls/65","html_url":"https://github.com/ambiata/p/pull/65","diff_url":"https://github.com/ambiata/p/pull/65.diff","patch_url":"https://github.com/ambiata/p/pull/65.patch"},"body":"I'm not 100% sure about this one, so I wanted to get some opinions before I go and write tests for it.\r\n\r\nEssentially this is `Bifunctor` but for monad transformers. Monad transformers can't implement `Bifunctor` because we can't rearrange the type parameters in a syntactically friendly way.\r\n\r\nThe main motivation is that we use `bimapEitherT` and `firstEitherT` a lot, and they're too damn long :)"},"comment":{"url":"https://api.github.com/repos/ambiata/p/issues/comments/173729402","html_url":"https://github.com/ambiata/p/pull/65#issuecomment-173729402","issue_url":"https://api.github.com/repos/ambiata/p/issues/65","id":173729402,"user":{"login":"tmcgilchrist","id":170937,"avatar_url":"https://avatars.githubusercontent.com/u/170937?v=3","gravatar_id":"","url":"https://api.github.com/users/tmcgilchrist","html_url":"https://github.com/tmcgilchrist","followers_url":"https://api.github.com/users/tmcgilchrist/followers","following_url":"https://api.github.com/users/tmcgilchrist/following{/other_user}","gists_url":"https://api.github.com/users/tmcgilchrist/gists{/gist_id}","starred_url":"https://api.github.com/users/tmcgilchrist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tmcgilchrist/subscriptions","organizations_url":"https://api.github.com/users/tmcgilchrist/orgs","repos_url":"https://api.github.com/users/tmcgilchrist/repos","events_url":"https://api.github.com/users/tmcgilchrist/events{/privacy}","received_events_url":"https://api.github.com/users/tmcgilchrist/received_events","type":"User","site_admin":false},"created_at":"2016-01-21T22:14:30Z","updated_at":"2016-01-21T22:14:30Z","body":"```haskell\r\nbimapEitherT :: Functor m => (e -> f) -> (a -> b) -> EitherT e m a -> EitherT f m b\r\n\r\n# vs\r\n\r\nbimapT :: Functor f => (x -> y) -> (a -> b) -> t x f a -> t y f b\r\n```"}}