{"action":"created","comment":{"url":"https://api.github.com/repos/ReactiveX/RxSwift/pulls/comments/37143796","id":37143796,"diff_hunk":"@@ -494,6 +494,25 @@ If you don't have a bridging header, you can go to your target's `Build Settings\n \n ** Comparison with RAC with respect to v3.0-RC.1\n \n+### Is RxSwift Functional Reactive Programming?\n+\n+Why this question is important? Because RxSwift is **NOT** *Functional Reactive Programming*. This clarification is important for 2 big reasons:\n+\n+* the Rx world is not time-continuous and doesn't have a denotative semantics, so all fundamentals of FRP are missing\n+* concepts and names are different, so when you start to learn Rx you should not link Rx and FRP\n+\n+If you are interested in learning more about what FRP is and to understand why is different from the Reactive Extensions this list of resources might help:\n+\n+* [Functional Reactive Animations](http://conal.net/papers/icfp97/)\n+* [Essence and Origins of FRP](http://conal.net/talks/essence-and-origins-of-frp-lambdajam-2015.pdf)\n+* [What is (functional) reactive programming?](http://stackoverflow.com/questions/1028250/what-is-functional-reactive-programming/1030631#1030631)\n+* [Specification for a Functional Reactive Programming language](http://stackoverflow.com/questions/5875929/specification-for-a-functional-reactive-programming-language)\n+\n+**So what RxSwift and the Rx world is?**\n+\n+*Rx is not FRP and was explicitly designed as a discrete collection API on purpose (as opposed to continuous time varying values).* [Source.](https://github.com/ReactiveX/reactivex.github.io/issues/130#issuecomment-123795960)","path":"README.md","position":20,"original_position":20,"commit_id":"19ec1d6d4096458e5d5f6f954854b64aceb75343","original_commit_id":"19ec1d6d4096458e5d5f6f954854b64aceb75343","user":{"login":"kzaher","id":1641148,"avatar_url":"https://avatars.githubusercontent.com/u/1641148?v=3","gravatar_id":"","url":"https://api.github.com/users/kzaher","html_url":"https://github.com/kzaher","followers_url":"https://api.github.com/users/kzaher/followers","following_url":"https://api.github.com/users/kzaher/following{/other_user}","gists_url":"https://api.github.com/users/kzaher/gists{/gist_id}","starred_url":"https://api.github.com/users/kzaher/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kzaher/subscriptions","organizations_url":"https://api.github.com/users/kzaher/orgs","repos_url":"https://api.github.com/users/kzaher/repos","events_url":"https://api.github.com/users/kzaher/events{/privacy}","received_events_url":"https://api.github.com/users/kzaher/received_events","type":"User","site_admin":false},"body":"I would rather describe what it is and how it's different then FRP, then what it's not :)","created_at":"2015-08-16T09:00:29Z","updated_at":"2015-08-16T09:00:29Z","html_url":"https://github.com/ReactiveX/RxSwift/pull/94#discussion_r37143796","pull_request_url":"https://api.github.com/repos/ReactiveX/RxSwift/pulls/94","_links":{"self":{"href":"https://api.github.com/repos/ReactiveX/RxSwift/pulls/comments/37143796"},"html":{"href":"https://github.com/ReactiveX/RxSwift/pull/94#discussion_r37143796"},"pull_request":{"href":"https://api.github.com/repos/ReactiveX/RxSwift/pulls/94"}}},"pull_request":{"url":"https://api.github.com/repos/ReactiveX/RxSwift/pulls/94","id":42521840,"html_url":"https://github.com/ReactiveX/RxSwift/pull/94","diff_url":"https://github.com/ReactiveX/RxSwift/pull/94.diff","patch_url":"https://github.com/ReactiveX/RxSwift/pull/94.patch","issue_url":"https://api.github.com/repos/ReactiveX/RxSwift/issues/94","number":94,"state":"open","locked":false,"title":"Explain why RxSwift is not FRP","user":{"login":"bontoJR","id":159493,"avatar_url":"https://avatars.githubusercontent.com/u/159493?v=3","gravatar_id":"","url":"https://api.github.com/users/bontoJR","html_url":"https://github.com/bontoJR","followers_url":"https://api.github.com/users/bontoJR/followers","following_url":"https://api.github.com/users/bontoJR/following{/other_user}","gists_url":"https://api.github.com/users/bontoJR/gists{/gist_id}","starred_url":"https://api.github.com/users/bontoJR/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bontoJR/subscriptions","organizations_url":"https://api.github.com/users/bontoJR/orgs","repos_url":"https://api.github.com/users/bontoJR/repos","events_url":"https://api.github.com/users/bontoJR/events{/privacy}","received_events_url":"https://api.github.com/users/bontoJR/received_events","type":"User","site_admin":false},"body":"This seems to be a big entry barrier right now. Newcomers have to face a different terminology and a lot of misconceptions about FRP and Reactive Programming in general, Rx included.\r\n\r\nI included a little paragraph to explain how FRP and Rx are different and try to *cut* the initial link that is causing some troubles to newcomers. :smiley: \r\n","created_at":"2015-08-15T16:33:05Z","updated_at":"2015-08-16T09:00:29Z","closed_at":null,"merged_at":null,"merge_commit_sha":"cbb5d596bea08093654a1b9701a2f9c8a08d46a3","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ReactiveX/RxSwift/pulls/94/commits","review_comments_url":"https://api.github.com/repos/ReactiveX/RxSwift/pulls/94/comments","review_comment_url":"https://api.github.com/repos/ReactiveX/RxSwift/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ReactiveX/RxSwift/issues/94/comments","statuses_url":"https://api.github.com/repos/ReactiveX/RxSwift/statuses/19ec1d6d4096458e5d5f6f954854b64aceb75343","head":{"label":"ReactiveX:feature/rxswift-2.0-doc","ref":"feature/rxswift-2.0-doc","sha":"19ec1d6d4096458e5d5f6f954854b64aceb75343","user":{"login":"ReactiveX","id":6407041,"avatar_url":"https://avatars.githubusercontent.com/u/6407041?v=3","gravatar_id":"","url":"https://api.github.com/users/ReactiveX","html_url":"https://github.com/ReactiveX","followers_url":"https://api.github.com/users/ReactiveX/followers","following_url":"https://api.github.com/users/ReactiveX/following{/other_user}","gists_url":"https://api.github.com/users/ReactiveX/gists{/gist_id}","starred_url":"https://api.github.com/users/ReactiveX/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ReactiveX/subscriptions","organizations_url":"https://api.github.com/users/ReactiveX/orgs","repos_url":"https://api.github.com/users/ReactiveX/repos","events_url":"https://api.github.com/users/ReactiveX/events{/privacy}","received_events_url":"https://api.github.com/users/ReactiveX/received_events","type":"Organization","site_admin":false},"repo":{"id":33569135,"name":"RxSwift","full_name":"ReactiveX/RxSwift","owner":{"login":"ReactiveX","id":6407041,"avatar_url":"https://avatars.githubusercontent.com/u/6407041?v=3","gravatar_id":"","url":"https://api.github.com/users/ReactiveX","html_url":"https://github.com/ReactiveX","followers_url":"https://api.github.com/users/ReactiveX/followers","following_url":"https://api.github.com/users/ReactiveX/following{/other_user}","gists_url":"https://api.github.com/users/ReactiveX/gists{/gist_id}","starred_url":"https://api.github.com/users/ReactiveX/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ReactiveX/subscriptions","organizations_url":"https://api.github.com/users/ReactiveX/orgs","repos_url":"https://api.github.com/users/ReactiveX/repos","events_url":"https://api.github.com/users/ReactiveX/events{/privacy}","received_events_url":"https://api.github.com/users/ReactiveX/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ReactiveX/RxSwift","description":"Reactive Programming in Swift","fork":false,"url":"https://api.github.com/repos/ReactiveX/RxSwift","forks_url":"https://api.github.com/repos/ReactiveX/RxSwift/forks","keys_url":"https://api.github.com/repos/ReactiveX/RxSwift/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ReactiveX/RxSwift/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ReactiveX/RxSwift/teams","hooks_url":"https://api.github.com/repos/ReactiveX/RxSwift/hooks","issue_events_url":"https://api.github.com/repos/ReactiveX/RxSwift/issues/events{/number}","events_url":"https://api.github.com/repos/ReactiveX/RxSwift/events","assignees_url":"https://api.github.com/repos/ReactiveX/RxSwift/assignees{/user}","branches_url":"https://api.github.com/repos/ReactiveX/RxSwift/branches{/branch}","tags_url":"https://api.github.com/repos/ReactiveX/RxSwift/tags","blobs_url":"https://api.github.com/repos/ReactiveX/RxSwift/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ReactiveX/RxSwift/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ReactiveX/RxSwift/git/refs{/sha}","trees_url":"https://api.github.com/repos/ReactiveX/RxSwift/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ReactiveX/RxSwift/statuses/{sha}","languages_url":"https://api.github.com/repos/ReactiveX/RxSwift/languages","stargazers_url":"https://api.github.com/repos/ReactiveX/RxSwift/stargazers","contributors_url":"https://api.github.com/repos/ReactiveX/RxSwift/contributors","subscribers_url":"https://api.github.com/repos/ReactiveX/RxSwift/subscribers","subscription_url":"https://api.github.com/repos/ReactiveX/RxSwift/subscription","commits_url":"https://api.github.com/repos/ReactiveX/RxSwift/commits{/sha}","git_commits_url":"https://api.github.com/repos/ReactiveX/RxSwift/git/commits{/sha}","comments_url":"https://api.github.com/repos/ReactiveX/RxSwift/comments{/number}","issue_comment_url":"https://api.github.com/repos/ReactiveX/RxSwift/issues/comments{/number}","contents_url":"https://api.github.com/repos/ReactiveX/RxSwift/contents/{+path}","compare_url":"https://api.github.com/repos/ReactiveX/RxSwift/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ReactiveX/RxSwift/merges","archive_url":"https://api.github.com/repos/ReactiveX/RxSwift/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ReactiveX/RxSwift/downloads","issues_url":"https://api.github.com/repos/ReactiveX/RxSwift/issues{/number}","pulls_url":"https://api.github.com/repos/ReactiveX/RxSwift/pulls{/number}","milestones_url":"https://api.github.com/repos/ReactiveX/RxSwift/milestones{/number}","notifications_url":"https://api.github.com/repos/ReactiveX/RxSwift/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ReactiveX/RxSwift/labels{/name}","releases_url":"https://api.github.com/repos/ReactiveX/RxSwift/releases{/id}","created_at":"2015-04-07T21:25:17Z","updated_at":"2015-08-16T06:02:39Z","pushed_at":"2015-08-15T23:37:55Z","git_url":"git://github.com/ReactiveX/RxSwift.git","ssh_url":"git@github.com:ReactiveX/RxSwift.git","clone_url":"https://github.com/ReactiveX/RxSwift.git","svn_url":"https://github.com/ReactiveX/RxSwift","homepage":"","size":2800,"stargazers_count":774,"watchers_count":774,"language":"Swift","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":52,"mirror_url":null,"open_issues_count":16,"forks":52,"open_issues":16,"watchers":774,"default_branch":"master"}},"base":{"label":"ReactiveX:rxswift-2.0","ref":"rxswift-2.0","sha":"ba05314a98ec1f09623ec205500fd8de6d3cf575","user":{"login":"ReactiveX","id":6407041,"avatar_url":"https://avatars.githubusercontent.com/u/6407041?v=3","gravatar_id":"","url":"https://api.github.com/users/ReactiveX","html_url":"https://github.com/ReactiveX","followers_url":"https://api.github.com/users/ReactiveX/followers","following_url":"https://api.github.com/users/ReactiveX/following{/other_user}","gists_url":"https://api.github.com/users/ReactiveX/gists{/gist_id}","starred_url":"https://api.github.com/users/ReactiveX/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ReactiveX/subscriptions","organizations_url":"https://api.github.com/users/ReactiveX/orgs","repos_url":"https://api.github.com/users/ReactiveX/repos","events_url":"https://api.github.com/users/ReactiveX/events{/privacy}","received_events_url":"https://api.github.com/users/ReactiveX/received_events","type":"Organization","site_admin":false},"repo":{"id":33569135,"name":"RxSwift","full_name":"ReactiveX/RxSwift","owner":{"login":"ReactiveX","id":6407041,"avatar_url":"https://avatars.githubusercontent.com/u/6407041?v=3","gravatar_id":"","url":"https://api.github.com/users/ReactiveX","html_url":"https://github.com/ReactiveX","followers_url":"https://api.github.com/users/ReactiveX/followers","following_url":"https://api.github.com/users/ReactiveX/following{/other_user}","gists_url":"https://api.github.com/users/ReactiveX/gists{/gist_id}","starred_url":"https://api.github.com/users/ReactiveX/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ReactiveX/subscriptions","organizations_url":"https://api.github.com/users/ReactiveX/orgs","repos_url":"https://api.github.com/users/ReactiveX/repos","events_url":"https://api.github.com/users/ReactiveX/events{/privacy}","received_events_url":"https://api.github.com/users/ReactiveX/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ReactiveX/RxSwift","description":"Reactive Programming in Swift","fork":false,"url":"https://api.github.com/repos/ReactiveX/RxSwift","forks_url":"https://api.github.com/repos/ReactiveX/RxSwift/forks","keys_url":"https://api.github.com/repos/ReactiveX/RxSwift/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ReactiveX/RxSwift/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ReactiveX/RxSwift/teams","hooks_url":"https://api.github.com/repos/ReactiveX/RxSwift/hooks","issue_events_url":"https://api.github.com/repos/ReactiveX/RxSwift/issues/events{/number}","events_url":"https://api.github.com/repos/ReactiveX/RxSwift/events","assignees_url":"https://api.github.com/repos/ReactiveX/RxSwift/assignees{/user}","branches_url":"https://api.github.com/repos/ReactiveX/RxSwift/branches{/branch}","tags_url":"https://api.github.com/repos/ReactiveX/RxSwift/tags","blobs_url":"https://api.github.com/repos/ReactiveX/RxSwift/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ReactiveX/RxSwift/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ReactiveX/RxSwift/git/refs{/sha}","trees_url":"https://api.github.com/repos/ReactiveX/RxSwift/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ReactiveX/RxSwift/statuses/{sha}","languages_url":"https://api.github.com/repos/ReactiveX/RxSwift/languages","stargazers_url":"https://api.github.com/repos/ReactiveX/RxSwift/stargazers","contributors_url":"https://api.github.com/repos/ReactiveX/RxSwift/contributors","subscribers_url":"https://api.github.com/repos/ReactiveX/RxSwift/subscribers","subscription_url":"https://api.github.com/repos/ReactiveX/RxSwift/subscription","commits_url":"https://api.github.com/repos/ReactiveX/RxSwift/commits{/sha}","git_commits_url":"https://api.github.com/repos/ReactiveX/RxSwift/git/commits{/sha}","comments_url":"https://api.github.com/repos/ReactiveX/RxSwift/comments{/number}","issue_comment_url":"https://api.github.com/repos/ReactiveX/RxSwift/issues/comments{/number}","contents_url":"https://api.github.com/repos/ReactiveX/RxSwift/contents/{+path}","compare_url":"https://api.github.com/repos/ReactiveX/RxSwift/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ReactiveX/RxSwift/merges","archive_url":"https://api.github.com/repos/ReactiveX/RxSwift/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ReactiveX/RxSwift/downloads","issues_url":"https://api.github.com/repos/ReactiveX/RxSwift/issues{/number}","pulls_url":"https://api.github.com/repos/ReactiveX/RxSwift/pulls{/number}","milestones_url":"https://api.github.com/repos/ReactiveX/RxSwift/milestones{/number}","notifications_url":"https://api.github.com/repos/ReactiveX/RxSwift/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ReactiveX/RxSwift/labels{/name}","releases_url":"https://api.github.com/repos/ReactiveX/RxSwift/releases{/id}","created_at":"2015-04-07T21:25:17Z","updated_at":"2015-08-16T06:02:39Z","pushed_at":"2015-08-15T23:37:55Z","git_url":"git://github.com/ReactiveX/RxSwift.git","ssh_url":"git@github.com:ReactiveX/RxSwift.git","clone_url":"https://github.com/ReactiveX/RxSwift.git","svn_url":"https://github.com/ReactiveX/RxSwift","homepage":"","size":2800,"stargazers_count":774,"watchers_count":774,"language":"Swift","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":52,"mirror_url":null,"open_issues_count":16,"forks":52,"open_issues":16,"watchers":774,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ReactiveX/RxSwift/pulls/94"},"html":{"href":"https://github.com/ReactiveX/RxSwift/pull/94"},"issue":{"href":"https://api.github.com/repos/ReactiveX/RxSwift/issues/94"},"comments":{"href":"https://api.github.com/repos/ReactiveX/RxSwift/issues/94/comments"},"review_comments":{"href":"https://api.github.com/repos/ReactiveX/RxSwift/pulls/94/comments"},"review_comment":{"href":"https://api.github.com/repos/ReactiveX/RxSwift/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ReactiveX/RxSwift/pulls/94/commits"},"statuses":{"href":"https://api.github.com/repos/ReactiveX/RxSwift/statuses/19ec1d6d4096458e5d5f6f954854b64aceb75343"}}}}