{"action":"opened","issue":{"url":"https://api.github.com/repos/typelevel/cats/issues/1904","repository_url":"https://api.github.com/repos/typelevel/cats","labels_url":"https://api.github.com/repos/typelevel/cats/issues/1904/labels{/name}","comments_url":"https://api.github.com/repos/typelevel/cats/issues/1904/comments","events_url":"https://api.github.com/repos/typelevel/cats/issues/1904/events","html_url":"https://github.com/typelevel/cats/issues/1904","id":256484978,"number":1904,"title":"many kernel algebraic typeclasses should be `Invariant`","user":{"login":"johnynek","id":67958,"avatar_url":"https://avatars0.githubusercontent.com/u/67958?v=4","gravatar_id":"","url":"https://api.github.com/users/johnynek","html_url":"https://github.com/johnynek","followers_url":"https://api.github.com/users/johnynek/followers","following_url":"https://api.github.com/users/johnynek/following{/other_user}","gists_url":"https://api.github.com/users/johnynek/gists{/gist_id}","starred_url":"https://api.github.com/users/johnynek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnynek/subscriptions","organizations_url":"https://api.github.com/users/johnynek/orgs","repos_url":"https://api.github.com/users/johnynek/repos","events_url":"https://api.github.com/users/johnynek/events{/privacy}","received_events_url":"https://api.github.com/users/johnynek/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-09-10T04:45:28Z","updated_at":"2017-09-10T04:45:28Z","closed_at":null,"author_association":"COLLABORATOR","body":"If you have `Invariant[M]` and an isomorphism (or bijection) `A => B, B => A` then you can go between `M[A] <=> M[B]`. This can be very useful when combined with shapeless which can generate iso morphisms between case classes and tuples, etc...\r\n\r\nHowever, Semigroup, Semilattice, Monoid, Group, etc... are left out of that as far as I can see.\r\n\r\nIt would be nice to have instances for those in `object Invariant` so they could be used without import."}}
{"actor":{"display_login":"johnynek"}}