{"action":"created","issue":{"url":"https://api.github.com/repos/ReactiveX/RxJava/issues/4436","repository_url":"https://api.github.com/repos/ReactiveX/RxJava","labels_url":"https://api.github.com/repos/ReactiveX/RxJava/issues/4436/labels{/name}","comments_url":"https://api.github.com/repos/ReactiveX/RxJava/issues/4436/comments","events_url":"https://api.github.com/repos/ReactiveX/RxJava/issues/4436/events","html_url":"https://github.com/ReactiveX/RxJava/pull/4436","id":173696678,"number":4436,"title":"2.x: Maybe for lazy Optional","user":{"login":"abersnaze","id":406038,"avatar_url":"https://avatars.githubusercontent.com/u/406038?v=3","gravatar_id":"","url":"https://api.github.com/users/abersnaze","html_url":"https://github.com/abersnaze","followers_url":"https://api.github.com/users/abersnaze/followers","following_url":"https://api.github.com/users/abersnaze/following{/other_user}","gists_url":"https://api.github.com/users/abersnaze/gists{/gist_id}","starred_url":"https://api.github.com/users/abersnaze/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/abersnaze/subscriptions","organizations_url":"https://api.github.com/users/abersnaze/orgs","repos_url":"https://api.github.com/users/abersnaze/repos","events_url":"https://api.github.com/users/abersnaze/events{/privacy}","received_events_url":"https://api.github.com/users/abersnaze/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ReactiveX/RxJava/labels/Feature-Request","name":"Feature-Request","color":"bfe5bf"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/ReactiveX/RxJava/milestones/16","html_url":"https://github.com/ReactiveX/RxJava/milestones/2.0%20RC%203","labels_url":"https://api.github.com/repos/ReactiveX/RxJava/milestones/16/labels","id":1835502,"number":16,"title":"2.0 RC 3","description":"Address feedback from RC 2, API and internal architecture lockdown. Most operators fusion-enabled.","creator":{"login":"akarnokd","id":1269832,"avatar_url":"https://avatars.githubusercontent.com/u/1269832?v=3","gravatar_id":"","url":"https://api.github.com/users/akarnokd","html_url":"https://github.com/akarnokd","followers_url":"https://api.github.com/users/akarnokd/followers","following_url":"https://api.github.com/users/akarnokd/following{/other_user}","gists_url":"https://api.github.com/users/akarnokd/gists{/gist_id}","starred_url":"https://api.github.com/users/akarnokd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akarnokd/subscriptions","organizations_url":"https://api.github.com/users/akarnokd/orgs","repos_url":"https://api.github.com/users/akarnokd/repos","events_url":"https://api.github.com/users/akarnokd/events{/privacy}","received_events_url":"https://api.github.com/users/akarnokd/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":1,"state":"open","created_at":"2016-06-17T23:00:00Z","updated_at":"2016-09-01T06:53:04Z","due_on":"2016-10-20T22:00:00Z","closed_at":null},"comments":10,"created_at":"2016-08-29T05:01:43Z","updated_at":"2016-09-01T08:01:08Z","closed_at":"2016-09-01T06:53:04Z","pull_request":{"url":"https://api.github.com/repos/ReactiveX/RxJava/pulls/4436","html_url":"https://github.com/ReactiveX/RxJava/pull/4436","diff_url":"https://github.com/ReactiveX/RxJava/pull/4436.diff","patch_url":"https://github.com/ReactiveX/RxJava/pull/4436.patch"},"body":"In #4321 I hit on the problem of needing a lazy object that could either be zero or one value. In that issue the idea of switching the return value of `reduce(R, Func2<R,T,R>)` from `Observable<R>` to `Single<R>` because that operator can only ever produce an Observable that emits exactly one value. The problem was that `reduce(Func2<T,T,T>)` could not be changed to `Single<T>` because the source Observable could be empty and therefore not produce one and only one value.\r\n\r\nTo solve this problem I mentioned we could create a lazy type that represents either 1 or no value could fill the gap between `Completable` and `Single<T>`.\r\n\r\nThis PR is for the introduction of the `Maybe<T>` type."},"comment":{"url":"https://api.github.com/repos/ReactiveX/RxJava/issues/comments/244005302","html_url":"https://github.com/ReactiveX/RxJava/pull/4436#issuecomment-244005302","issue_url":"https://api.github.com/repos/ReactiveX/RxJava/issues/4436","id":244005302,"user":{"login":"akarnokd","id":1269832,"avatar_url":"https://avatars.githubusercontent.com/u/1269832?v=3","gravatar_id":"","url":"https://api.github.com/users/akarnokd","html_url":"https://github.com/akarnokd","followers_url":"https://api.github.com/users/akarnokd/followers","following_url":"https://api.github.com/users/akarnokd/following{/other_user}","gists_url":"https://api.github.com/users/akarnokd/gists{/gist_id}","starred_url":"https://api.github.com/users/akarnokd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akarnokd/subscriptions","organizations_url":"https://api.github.com/users/akarnokd/orgs","repos_url":"https://api.github.com/users/akarnokd/repos","events_url":"https://api.github.com/users/akarnokd/events{/privacy}","received_events_url":"https://api.github.com/users/akarnokd/received_events","type":"User","site_admin":false},"created_at":"2016-09-01T08:01:08Z","updated_at":"2016-09-01T08:01:08Z","body":"Please don't post PRs targeting Maybe - I'm working on cleaning it up a bit (plus a few other classes if I find something wrong); the code copied from an older commit of the other types."}}
{"actor":{"display_login":"akarnokd"}}