{"action":"created","issue":{"url":"https://api.github.com/repos/typelevel/cats/issues/1178","repository_url":"https://api.github.com/repos/typelevel/cats","labels_url":"https://api.github.com/repos/typelevel/cats/issues/1178/labels{/name}","comments_url":"https://api.github.com/repos/typelevel/cats/issues/1178/comments","events_url":"https://api.github.com/repos/typelevel/cats/issues/1178/events","html_url":"https://github.com/typelevel/cats/pull/1178","id":163776423,"number":1178,"title":"Add Is constructor for Leibniz equality","user":{"login":"tel","id":1141,"avatar_url":"https://avatars.githubusercontent.com/u/1141?v=3","gravatar_id":"","url":"https://api.github.com/users/tel","html_url":"https://github.com/tel","followers_url":"https://api.github.com/users/tel/followers","following_url":"https://api.github.com/users/tel/following{/other_user}","gists_url":"https://api.github.com/users/tel/gists{/gist_id}","starred_url":"https://api.github.com/users/tel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tel/subscriptions","organizations_url":"https://api.github.com/users/tel/orgs","repos_url":"https://api.github.com/users/tel/repos","events_url":"https://api.github.com/users/tel/events{/privacy}","received_events_url":"https://api.github.com/users/tel/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2016-07-05T05:52:36Z","updated_at":"2016-07-07T15:08:22Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/typelevel/cats/pulls/1178","html_url":"https://github.com/typelevel/cats/pull/1178","diff_url":"https://github.com/typelevel/cats/pull/1178.diff","patch_url":"https://github.com/typelevel/cats/pull/1178.patch"},"body":"(See #1177 for initial discussion)\r\n\r\nThis PR adds Leibniz type equality under the name `A Is B`. Leibniz equality is an improvement over `Predef.=:=` as it can be substituted into type expressions and as it has more computational meaning. Both of these add power and convenience to `Is` which makes it appealing for certain kinds of pure functional work. I am, for instance, using a local version of this in a [Cats-based lens library I'm working on](https://github.com/tel/scala-telescope) to implement a generalized `Equality[S, T, A, B]` optic at the base of the optical hierarchy. It also shows up nicely for making GADTs with more computational integrity.\r\n\r\nThis is my first Cats contribution so there's probably a lot missing—please let me know how to continue to develop it.\r\n\r\n## Questions\r\n\r\n- I've simplified the Scalaz version back to one they used previously which appears to not play as nicely with subtyping. I'm not sure if this is a good idea... but it's undeniable that this version is clearer.\r\n- Is `Is` a good name? Also possible are `TEq`, `Leib`, and `Leibniz`. I like `Is` since it's very direct.\r\n- How can I better document this?\r\n- What is the right way to add tests?\r\n- What methods or companion object functions are missing? Are there any I have right now that are suspect?"},"comment":{"url":"https://api.github.com/repos/typelevel/cats/issues/comments/231107004","html_url":"https://github.com/typelevel/cats/pull/1178#issuecomment-231107004","issue_url":"https://api.github.com/repos/typelevel/cats/issues/1178","id":231107004,"user":{"login":"kailuowang","id":83257,"avatar_url":"https://avatars.githubusercontent.com/u/83257?v=3","gravatar_id":"","url":"https://api.github.com/users/kailuowang","html_url":"https://github.com/kailuowang","followers_url":"https://api.github.com/users/kailuowang/followers","following_url":"https://api.github.com/users/kailuowang/following{/other_user}","gists_url":"https://api.github.com/users/kailuowang/gists{/gist_id}","starred_url":"https://api.github.com/users/kailuowang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kailuowang/subscriptions","organizations_url":"https://api.github.com/users/kailuowang/orgs","repos_url":"https://api.github.com/users/kailuowang/repos","events_url":"https://api.github.com/users/kailuowang/events{/privacy}","received_events_url":"https://api.github.com/users/kailuowang/received_events","type":"User","site_admin":false},"created_at":"2016-07-07T15:08:21Z","updated_at":"2016-07-07T15:08:21Z","body":"Thanks very much @tel, I had a discussion with @milessabin at gitter IRT testing such code in cats\r\nFor your reference\r\nhttps://gitter.im/typelevel/cats?at=577e6d647aeb0805276ec94e\r\n"}}
{"actor":{"display_login":"kailuowang"}}