{"action":"created","issue":{"url":"https://api.github.com/repos/typelevel/cats/issues/2276","repository_url":"https://api.github.com/repos/typelevel/cats","labels_url":"https://api.github.com/repos/typelevel/cats/issues/2276/labels{/name}","comments_url":"https://api.github.com/repos/typelevel/cats/issues/2276/comments","events_url":"https://api.github.com/repos/typelevel/cats/issues/2276/events","html_url":"https://github.com/typelevel/cats/issues/2276","id":328749009,"node_id":"MDU6SXNzdWUzMjg3NDkwMDk=","number":2276,"title":"Id instances cannot be removed from the scope","user":{"login":"djspiewak","id":752,"node_id":"MDQ6VXNlcjc1Mg==","avatar_url":"https://avatars1.githubusercontent.com/u/752?v=4","gravatar_id":"","url":"https://api.github.com/users/djspiewak","html_url":"https://github.com/djspiewak","followers_url":"https://api.github.com/users/djspiewak/followers","following_url":"https://api.github.com/users/djspiewak/following{/other_user}","gists_url":"https://api.github.com/users/djspiewak/gists{/gist_id}","starred_url":"https://api.github.com/users/djspiewak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/djspiewak/subscriptions","organizations_url":"https://api.github.com/users/djspiewak/orgs","repos_url":"https://api.github.com/users/djspiewak/repos","events_url":"https://api.github.com/users/djspiewak/events{/privacy}","received_events_url":"https://api.github.com/users/djspiewak/received_events","type":"User","site_admin":false},"labels":[{"id":171393709,"node_id":"MDU6TGFiZWwxNzEzOTM3MDk=","url":"https://api.github.com/repos/typelevel/cats/labels/bug","name":"bug","color":"fc2929","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-06-02T14:34:25Z","updated_at":"2018-06-02T19:11:25Z","closed_at":null,"author_association":"COLLABORATOR","body":"This is the best thing ever:\r\n\r\n```scala\r\ncats.Monad[cats.Id]\r\n```\r\n\r\nNo imports. That compiles. Credit to @edmundnoble for finding the original issue here: https://github.com/djspiewak/shims/issues/20\r\n\r\nThe problem here is that `catsInstancesForId` is defined in the `cats` package object. This is a problem because the `cats` package is a *component* of the `cats.Id` type, and the `cats` package object is its own companion, meaning that the `cats` package object part of the implicit scope (without any imports!) used when resolving *any* type in the `cats` package (or presumably, any subpackage). This would also be a problem if other implicits were defined in the `cats` package object, but the `Id` instances are the only ones.\r\n\r\nAs far as I can tell, this scoping issue is pretty innocuous (if a bit leaky) if you're *only* using cats. Unfortunately, the moment you have scalaz on the classpath (you don't even need imports!) and are using shims, you end up in a world of hurt. See the issue I linked for an example.\r\n\r\nThe solution here is to unfortunately break compatibility. Implicits should be banned from the `cats` package object, and the `Id` instances should be moved to something like `cats.implicits.id`."},"comment":{"url":"https://api.github.com/repos/typelevel/cats/issues/comments/394109823","html_url":"https://github.com/typelevel/cats/issues/2276#issuecomment-394109823","issue_url":"https://api.github.com/repos/typelevel/cats/issues/2276","id":394109823,"node_id":"MDEyOklzc3VlQ29tbWVudDM5NDEwOTgyMw==","user":{"login":"johnynek","id":67958,"node_id":"MDQ6VXNlcjY3OTU4","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},"created_at":"2018-06-02T19:11:25Z","updated_at":"2018-06-02T19:11:25Z","author_association":"COLLABORATOR","body":"Actually removing implicit annotation is Mima compatible. So, we could keep the vals/defs but remove implicit."}}
{"actor":{"display_login":"johnynek"}}