{"action":"created","issue":{"url":"https://api.github.com/repos/typelevel/cats/issues/1345","repository_url":"https://api.github.com/repos/typelevel/cats","labels_url":"https://api.github.com/repos/typelevel/cats/issues/1345/labels{/name}","comments_url":"https://api.github.com/repos/typelevel/cats/issues/1345/comments","events_url":"https://api.github.com/repos/typelevel/cats/issues/1345/events","html_url":"https://github.com/typelevel/cats/pull/1345","id":174577993,"number":1345,"title":"Bump ScalaCheck to 1.13.1, and fix the fallout.","user":{"login":"non","id":218045,"avatar_url":"https://avatars.githubusercontent.com/u/218045?v=3","gravatar_id":"","url":"https://api.github.com/users/non","html_url":"https://github.com/non","followers_url":"https://api.github.com/users/non/followers","following_url":"https://api.github.com/users/non/following{/other_user}","gists_url":"https://api.github.com/users/non/gists{/gist_id}","starred_url":"https://api.github.com/users/non/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/non/subscriptions","organizations_url":"https://api.github.com/users/non/orgs","repos_url":"https://api.github.com/users/non/repos","events_url":"https://api.github.com/users/non/events{/privacy}","received_events_url":"https://api.github.com/users/non/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/typelevel/cats/labels/Breaking%20change","name":"Breaking change","color":"fbca04"},{"url":"https://api.github.com/repos/typelevel/cats/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/typelevel/cats/labels/in%20progress","name":"in progress","color":"ededed"},{"url":"https://api.github.com/repos/typelevel/cats/labels/question","name":"question","color":"cc317c"},{"url":"https://api.github.com/repos/typelevel/cats/labels/testing","name":"testing","color":"eb6420"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2016-09-01T17:14:36Z","updated_at":"2016-09-06T05:07:07Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/typelevel/cats/pulls/1345","html_url":"https://github.com/typelevel/cats/pull/1345","diff_url":"https://github.com/typelevel/cats/pull/1345.diff","patch_url":"https://github.com/typelevel/cats/pull/1345.patch"},"body":"### Status\r\n\r\n - [x] Get PR building correctly\r\n - [x] Decide what to do about `MonadCombine` laws\r\n - [x] Fix cryptic errors in the *js* subproject\r\n\r\n### Summary\r\n\r\nThis commit gets all our law tests working with a new, more robust\r\nScalaCheck version. It currently relies upon an unreleased Discipline\r\nsnapshot, so it definitely won't build in Travis.\r\n\r\nThere were a bunch of test bugs that got fixed, mostly around\r\nfoldRight/reduceRight consistency for non-empty data structures.\r\n\r\nOne law violation was uncovered: MonadCombine[Option] doesn't pass the\r\nleft-distributivity law we wrote. We should figure out whether this\r\nrepresents a real law violation and remove the instance, or whether\r\nthe law is too strict somehow.\r\n\r\nOne counter-example is:\r\n\r\n    def f(x: Int): Option[Int] = if (x == 0) None else Some(x)\r\n    val a = Option(0)\r\n    val b = Option(1)\r\n    (a <+> b).flatMap(f) != (a.flatMap(f) <+> b.flatMap(f))\r\n\r\nReview by @adelbertc et al. We will need to wait for a new Discipline\r\nrelease before merging this, and we'll need to do something about the\r\nMonadCombine laws/instances (currently the MonadCombine[Option] test\r\nis commented out)."},"comment":{"url":"https://api.github.com/repos/typelevel/cats/issues/comments/244850886","html_url":"https://github.com/typelevel/cats/pull/1345#issuecomment-244850886","issue_url":"https://api.github.com/repos/typelevel/cats/issues/1345","id":244850886,"user":{"login":"non","id":218045,"avatar_url":"https://avatars.githubusercontent.com/u/218045?v=3","gravatar_id":"","url":"https://api.github.com/users/non","html_url":"https://github.com/non","followers_url":"https://api.github.com/users/non/followers","following_url":"https://api.github.com/users/non/following{/other_user}","gists_url":"https://api.github.com/users/non/gists{/gist_id}","starred_url":"https://api.github.com/users/non/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/non/subscriptions","organizations_url":"https://api.github.com/users/non/orgs","repos_url":"https://api.github.com/users/non/repos","events_url":"https://api.github.com/users/non/events{/privacy}","received_events_url":"https://api.github.com/users/non/received_events","type":"User","site_admin":false},"created_at":"2016-09-06T05:07:07Z","updated_at":"2016-09-06T05:07:07Z","body":"For now I've elected to remove the *left distributivity* law from `MonadCombine`. Would love a review by @fthomas, but I think if no one objects and we can get the sign-offs we should just go for it.\r\n\r\nIf anyone feels strongly I'm also fine with downgrading `MonadCombine[Option]` to `MonoidK[Option]` and `MonadFilter[Option]`."}}
{"actor":{"display_login":"non"}}