{"action":"created","issue":{"url":"https://api.github.com/repos/non/cats/issues/555","labels_url":"https://api.github.com/repos/non/cats/issues/555/labels{/name}","comments_url":"https://api.github.com/repos/non/cats/issues/555/comments","events_url":"https://api.github.com/repos/non/cats/issues/555/events","html_url":"https://github.com/non/cats/pull/555","id":109524997,"number":555,"title":"Generalize ApplyBuilder to Monoidal structures","user":{"login":"julienrf","id":332812,"avatar_url":"https://avatars.githubusercontent.com/u/332812?v=3","gravatar_id":"","url":"https://api.github.com/users/julienrf","html_url":"https://github.com/julienrf","followers_url":"https://api.github.com/users/julienrf/followers","following_url":"https://api.github.com/users/julienrf/following{/other_user}","gists_url":"https://api.github.com/users/julienrf/gists{/gist_id}","starred_url":"https://api.github.com/users/julienrf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/julienrf/subscriptions","organizations_url":"https://api.github.com/users/julienrf/orgs","repos_url":"https://api.github.com/users/julienrf/repos","events_url":"https://api.github.com/users/julienrf/events{/privacy}","received_events_url":"https://api.github.com/users/julienrf/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/non/cats/milestones/2","html_url":"https://github.com/non/cats/milestones/cats-1.0.0","labels_url":"https://api.github.com/repos/non/cats/milestones/2/labels","id":1201589,"number":2,"title":"cats-1.0.0","description":"","creator":{"login":"ceedubs","id":977929,"avatar_url":"https://avatars.githubusercontent.com/u/977929?v=3","gravatar_id":"","url":"https://api.github.com/users/ceedubs","html_url":"https://github.com/ceedubs","followers_url":"https://api.github.com/users/ceedubs/followers","following_url":"https://api.github.com/users/ceedubs/following{/other_user}","gists_url":"https://api.github.com/users/ceedubs/gists{/gist_id}","starred_url":"https://api.github.com/users/ceedubs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ceedubs/subscriptions","organizations_url":"https://api.github.com/users/ceedubs/orgs","repos_url":"https://api.github.com/users/ceedubs/repos","events_url":"https://api.github.com/users/ceedubs/events{/privacy}","received_events_url":"https://api.github.com/users/ceedubs/received_events","type":"User","site_admin":false},"open_issues":9,"closed_issues":1,"state":"open","created_at":"2015-07-09T22:28:28Z","updated_at":"2015-11-19T02:10:18Z","due_on":null,"closed_at":null},"comments":31,"created_at":"2015-10-02T16:22:15Z","updated_at":"2015-12-10T21:10:09Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/non/cats/pulls/555","html_url":"https://github.com/non/cats/pull/555","diff_url":"https://github.com/non/cats/pull/555.diff","patch_url":"https://github.com/non/cats/pull/555.patch"},"body":"I’d like to get your feedback on this work in progress. Here is my plan:\r\n\r\n- [x] Introduce a `Monoidal` type class ;\r\n- [x] Generalize `ApplySyntax` to monoidal structures ;\r\n- [x] Add `imap` and `contramap` methods to `MonoidalBuilder` (that’s why this PR is actually useful) ;\r\n- [x] Monoidal laws ;\r\n- [x] Tests ;\r\n- [ ] Documentation.\r\n\r\nThe motivation is to be able to express function application (for any arity) within a context, like we can currently do with `Apply`, but with contravariant (e.g. printers) and invariant (e.g. codecs) structures."},"comment":{"url":"https://api.github.com/repos/non/cats/issues/comments/163750070","html_url":"https://github.com/non/cats/pull/555#issuecomment-163750070","issue_url":"https://api.github.com/repos/non/cats/issues/555","id":163750070,"user":{"login":"milessabin","id":131183,"avatar_url":"https://avatars.githubusercontent.com/u/131183?v=3","gravatar_id":"","url":"https://api.github.com/users/milessabin","html_url":"https://github.com/milessabin","followers_url":"https://api.github.com/users/milessabin/followers","following_url":"https://api.github.com/users/milessabin/following{/other_user}","gists_url":"https://api.github.com/users/milessabin/gists{/gist_id}","starred_url":"https://api.github.com/users/milessabin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/milessabin/subscriptions","organizations_url":"https://api.github.com/users/milessabin/orgs","repos_url":"https://api.github.com/users/milessabin/repos","events_url":"https://api.github.com/users/milessabin/events{/privacy}","received_events_url":"https://api.github.com/users/milessabin/received_events","type":"User","site_admin":false},"created_at":"2015-12-10T21:10:09Z","updated_at":"2015-12-10T21:10:09Z","body":"I think it's a shame we have to duplicate the `pure` signature. A `Pure` type class, without laws of it's own, but piggybacking on the laws of the type classes that extend it, would be a win here."}}