{"action":"created","issue":{"url":"https://api.github.com/repos/HeinrichApfelmus/reactive-banana/issues/147","repository_url":"https://api.github.com/repos/HeinrichApfelmus/reactive-banana","labels_url":"https://api.github.com/repos/HeinrichApfelmus/reactive-banana/issues/147/labels{/name}","comments_url":"https://api.github.com/repos/HeinrichApfelmus/reactive-banana/issues/147/comments","events_url":"https://api.github.com/repos/HeinrichApfelmus/reactive-banana/issues/147/events","html_url":"https://github.com/HeinrichApfelmus/reactive-banana/issues/147","id":213850557,"number":147,"title":"Name change suggestions","user":{"login":"dimitri-xyz","id":6128090,"avatar_url":"https://avatars1.githubusercontent.com/u/6128090?v=4","gravatar_id":"","url":"https://api.github.com/users/dimitri-xyz","html_url":"https://github.com/dimitri-xyz","followers_url":"https://api.github.com/users/dimitri-xyz/followers","following_url":"https://api.github.com/users/dimitri-xyz/following{/other_user}","gists_url":"https://api.github.com/users/dimitri-xyz/gists{/gist_id}","starred_url":"https://api.github.com/users/dimitri-xyz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dimitri-xyz/subscriptions","organizations_url":"https://api.github.com/users/dimitri-xyz/orgs","repos_url":"https://api.github.com/users/dimitri-xyz/repos","events_url":"https://api.github.com/users/dimitri-xyz/events{/privacy}","received_events_url":"https://api.github.com/users/dimitri-xyz/received_events","type":"User","site_admin":false},"labels":[{"id":207688,"url":"https://api.github.com/repos/HeinrichApfelmus/reactive-banana/labels/Type:%20Design%20Discussion","name":"Type: Design Discussion","color":"baeaff","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2017-03-13T18:04:10Z","updated_at":"2018-05-22T03:04:12Z","closed_at":null,"author_association":"NONE","body":"I think the name of some of the functions and types used in Reactive Banana could be improved to help beginners and also to more closely match the semantic meaning of the underlying operations and types. Here are a few suggestions that I think are important.\r\n\r\nChange `actuate` to `activate` — These words have very similar meanings and I believe are interchangeable in the context of `EventNetwork`s. However, activate is much more common. A cursory google search has 246 million hits for activate against only 6.7 million for actuate. So, activate is over 30 times more common. This makes it easier for non-native English speakers to know its meaning.\r\n\r\nChange `AddHandler` to `HandlerSet` — I think it is easier to have a type denote nouns (such as a network connection, a list or a hashMap) as opposed to verbs. Those are usually associated with functions (such as in filter, interpret and apply). In the case of `AddHandler`, “Add” is a verb.\r\n\r\nSemantically, this types provides a Set of event handlers that are all “fired” together. There is no internal structure, so this is not a list. A HandlerRegistrar or similar name would also work, but the word registrar is not used much. Derived functions such as “newAddHandler” would also have clearer names (e.g. newAddHandler becomes newHandlerSet).\r\n\r\nChange `Event` to `EventStream` — I understand this may be a more controversial change. I believe the name `Event` has stuck for historical reasons. However, I believe it is very confusing in the context of Reactive Banana. In common day usage, an event happens only once, whereas in Reactive Banana the type `Event a` encompasses multiple events that happen at different times. From the docs “`Event a` represents a stream of events as they occur in time.” This leads to some confusion. The new name would more closely reflect the type’s semantic meaning. Note that there is no such problem with Behaviors.\r\n\r\nI think it is easy to make these changes in the code and documentation, but I wouldn't want to make a pull request before the discussion. To keep backwards compatibility, it is only necessary to make name aliases. For example:\r\n\r\n```haskell\r\ntype AddHandler = HandlerSet\r\nnewAddHandler   = newHandlerSet\r\nfromAddHandler  = fromHandlerSet\r\nactuate         = activate\r\n```\r\n\r\nI think Haskell’s Achilles’ heel is its barrier to entry. The intent of this suggestion is to make Reactive Banana easier to learn and understand."},"comment":{"url":"https://api.github.com/repos/HeinrichApfelmus/reactive-banana/issues/comments/390848184","html_url":"https://github.com/HeinrichApfelmus/reactive-banana/issues/147#issuecomment-390848184","issue_url":"https://api.github.com/repos/HeinrichApfelmus/reactive-banana/issues/147","id":390848184,"user":{"login":"mitchellwrosen","id":1074598,"avatar_url":"https://avatars2.githubusercontent.com/u/1074598?v=4","gravatar_id":"","url":"https://api.github.com/users/mitchellwrosen","html_url":"https://github.com/mitchellwrosen","followers_url":"https://api.github.com/users/mitchellwrosen/followers","following_url":"https://api.github.com/users/mitchellwrosen/following{/other_user}","gists_url":"https://api.github.com/users/mitchellwrosen/gists{/gist_id}","starred_url":"https://api.github.com/users/mitchellwrosen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mitchellwrosen/subscriptions","organizations_url":"https://api.github.com/users/mitchellwrosen/orgs","repos_url":"https://api.github.com/users/mitchellwrosen/repos","events_url":"https://api.github.com/users/mitchellwrosen/events{/privacy}","received_events_url":"https://api.github.com/users/mitchellwrosen/received_events","type":"User","site_admin":false},"created_at":"2018-05-22T03:04:12Z","updated_at":"2018-05-22T03:04:12Z","author_association":"CONTRIBUTOR","body":"I am:\r\n\r\n- -1 on changing `actuate` to `activate`. I'm a native English speaker and I don't even know what actuate means, but the API for working with `EventNetwork`s is so tiny that I don't think there's much chance of confusion.\r\n- +1 on changing `Event` to `Events`\r\n- +1 on changing the name of `AddHandler`, because the name is so difficult for me to understand. I unfortunately don't like `HandlerSet` much. `Handlers`?"}}
{"actor":{"display_login":"mitchellwrosen"}}