{"action":"created","issue":{"url":"https://api.github.com/repos/javaslang/javaslang/issues/240","labels_url":"https://api.github.com/repos/javaslang/javaslang/issues/240/labels{/name}","comments_url":"https://api.github.com/repos/javaslang/javaslang/issues/240/comments","events_url":"https://api.github.com/repos/javaslang/javaslang/issues/240/events","html_url":"https://github.com/javaslang/javaslang/issues/240","id":76834294,"number":240,"title":"Add Apply between Monad and Functor","user":{"login":"jbgi","id":221929,"avatar_url":"https://avatars.githubusercontent.com/u/221929?v=3","gravatar_id":"","url":"https://api.github.com/users/jbgi","html_url":"https://github.com/jbgi","followers_url":"https://api.github.com/users/jbgi/followers","following_url":"https://api.github.com/users/jbgi/following{/other_user}","gists_url":"https://api.github.com/users/jbgi/gists{/gist_id}","starred_url":"https://api.github.com/users/jbgi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbgi/subscriptions","organizations_url":"https://api.github.com/users/jbgi/orgs","repos_url":"https://api.github.com/users/jbgi/repos","events_url":"https://api.github.com/users/jbgi/events{/privacy}","received_events_url":"https://api.github.com/users/jbgi/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/javaslang/javaslang/labels/feature","name":"feature","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/javaslang/javaslang/milestones/19","html_url":"https://github.com/javaslang/javaslang/milestones/javaslang-pure","labels_url":"https://api.github.com/repos/javaslang/javaslang/milestones/19/labels","id":1119314,"number":19,"title":"javaslang-pure","description":"","creator":{"login":"danieldietrich","id":743833,"avatar_url":"https://avatars.githubusercontent.com/u/743833?v=3","gravatar_id":"","url":"https://api.github.com/users/danieldietrich","html_url":"https://github.com/danieldietrich","followers_url":"https://api.github.com/users/danieldietrich/followers","following_url":"https://api.github.com/users/danieldietrich/following{/other_user}","gists_url":"https://api.github.com/users/danieldietrich/gists{/gist_id}","starred_url":"https://api.github.com/users/danieldietrich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danieldietrich/subscriptions","organizations_url":"https://api.github.com/users/danieldietrich/orgs","repos_url":"https://api.github.com/users/danieldietrich/repos","events_url":"https://api.github.com/users/danieldietrich/events{/privacy}","received_events_url":"https://api.github.com/users/danieldietrich/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":0,"state":"open","created_at":"2015-05-19T21:11:12Z","updated_at":"2015-05-20T09:27:43Z","due_on":null,"closed_at":null},"comments":28,"created_at":"2015-05-15T19:40:15Z","updated_at":"2015-05-20T20:49:54Z","closed_at":null,"body":"Applicative functors are extremely useful, it would help a lot to have Apply for implementing lenses.\r\nAlso not sure why Traversable extends Monad ???\r\nAlso Monad and Functor are generated to avoid some duplication with the 'Checked' alternative ; but I think it it is probably not worth it ; hacking them (to add default methods for example) is extremely tedious. WDYT?\r\n"},"comment":{"url":"https://api.github.com/repos/javaslang/javaslang/issues/comments/104033558","html_url":"https://github.com/javaslang/javaslang/issues/240#issuecomment-104033558","issue_url":"https://api.github.com/repos/javaslang/javaslang/issues/240","id":104033558,"user":{"login":"danieldietrich","id":743833,"avatar_url":"https://avatars.githubusercontent.com/u/743833?v=3","gravatar_id":"","url":"https://api.github.com/users/danieldietrich","html_url":"https://github.com/danieldietrich","followers_url":"https://api.github.com/users/danieldietrich/followers","following_url":"https://api.github.com/users/danieldietrich/following{/other_user}","gists_url":"https://api.github.com/users/danieldietrich/gists{/gist_id}","starred_url":"https://api.github.com/users/danieldietrich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danieldietrich/subscriptions","organizations_url":"https://api.github.com/users/danieldietrich/orgs","repos_url":"https://api.github.com/users/danieldietrich/repos","events_url":"https://api.github.com/users/danieldietrich/events{/privacy}","received_events_url":"https://api.github.com/users/danieldietrich/received_events","type":"User","site_admin":false},"created_at":"2015-05-20T20:49:54Z","updated_at":"2015-05-20T20:49:54Z","body":"@jbgi \r\n\r\nWe could do that only in a flat way:\r\n\r\n```java\r\ninterface List<T> extends Seq<T>, Kind<List<?>, T> {}\r\ninterface Stream<T> extends Seq<T>, Kind<Stream<?>, T> {}\r\ninterface Option<T> extends Kind<Option<?>, T> {}\r\ninterface Try<T> extends Kind<Try<?>, T> {}\r\ninterface Either.LeftProjection<L, R> extends Kind<LeftProjection<?>, T> {}\r\ninterface Either.RightProjection<L, R> extends Kind<RightProjection<?>, T> {}\r\ninterface Match<T> extends Kind<Match<?>, T> {}\r\ninterface Gen<T> extends Kind<Gen<?>, T> {}\r\ninterface Arbitrary<T> extends Kind<Arbitrary <?>, T> {}\r\n```\r\n\r\nNo inheritance possible then with a new kind of `Kind`, e.g. this will then not work:\r\n\r\n```java\r\ninterface ArrayList<T> extends List<T>, Kind<ArrayList<?>, T> {}\r\n```\r\n"}}