{"action":"created","issue":{"url":"https://api.github.com/repos/elm-lang/elm-plans/issues/4","labels_url":"https://api.github.com/repos/elm-lang/elm-plans/issues/4/labels{/name}","comments_url":"https://api.github.com/repos/elm-lang/elm-plans/issues/4/comments","events_url":"https://api.github.com/repos/elm-lang/elm-plans/issues/4/events","html_url":"https://github.com/elm-lang/elm-plans/issues/4","id":94636592,"number":4,"title":"Proposal: Disallow apostrophes in names","user":{"login":"rtfeldman","id":1094080,"avatar_url":"https://avatars.githubusercontent.com/u/1094080?v=3","gravatar_id":"","url":"https://api.github.com/users/rtfeldman","html_url":"https://github.com/rtfeldman","followers_url":"https://api.github.com/users/rtfeldman/followers","following_url":"https://api.github.com/users/rtfeldman/following{/other_user}","gists_url":"https://api.github.com/users/rtfeldman/gists{/gist_id}","starred_url":"https://api.github.com/users/rtfeldman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtfeldman/subscriptions","organizations_url":"https://api.github.com/users/rtfeldman/orgs","repos_url":"https://api.github.com/users/rtfeldman/repos","events_url":"https://api.github.com/users/rtfeldman/events{/privacy}","received_events_url":"https://api.github.com/users/rtfeldman/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/elm-lang/elm-plans/labels/proposal","name":"proposal","color":"5319e7"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":9,"created_at":"2015-07-13T04:32:37Z","updated_at":"2015-07-13T14:02:50Z","closed_at":null,"body":"## Proposed Change\r\n\r\nUsing `'` in a variable or function name becomes a syntax error.\r\n\r\n(Shockingly, this would be a breaking change.)\r\n\r\n## Motivation\r\n\r\nA common convention in Elm, presumably inherited from Haskell, is that if you want an alternate version of something called `foo`, a quick way to avoid coming up with a new name is to call it `foo'`.\r\n\r\nArguments for removing it:\r\n\r\n**1.** It confuses newbies, because `'` is not allowed in most languages' variable or function names, so they assume it is a sigil with some special meaning they do not know.\r\n\r\nElm newbies have asked me variations of [this StackOverflow question](http://stackoverflow.com/questions/1207649/the-meaning-of-in-haskell-function-name) on several occasions. More specifically, every Elm newbie I can recall who saw `elm-html`'s [`type'` attribute](http://package.elm-lang.org/packages/evancz/elm-html/3.0.0/Html-Attributes#type') has asked me what the `'` meant.\r\n\r\nIf they don't have someone like me to ask, they will sidetrack their introduction to Elm in order to go off and Google an un-Google-friendly term in hopes of getting unstuck.\r\n\r\n**2.** Being about two pixels in size, it is much easier to miss than other single-character suffixes such as `_` or `2` (e.g. `foo_` or `foo2`), while being no more concise.\r\n\r\nOne could argue \"if that's a problem for you, don't use it,\" but in reality we all have to interact with others' code. The fact that it is allowed (and de facto encouraged by convention) means it still impacts those of us who choose not to write it ourselves.\r\n\r\n**3.** The migration from `'` to `_` (for example) requires little more than running the following regexp: `s/([\\s^]\\s*)([^'\\s]+)'/\\1\\2_/g` (and you can run this again to change `''` to `__` etc), so it's not like it would be terribly time-consuming to convert."},"comment":{"url":"https://api.github.com/repos/elm-lang/elm-plans/issues/comments/120938258","html_url":"https://github.com/elm-lang/elm-plans/issues/4#issuecomment-120938258","issue_url":"https://api.github.com/repos/elm-lang/elm-plans/issues/4","id":120938258,"user":{"login":"mgold","id":1191970,"avatar_url":"https://avatars.githubusercontent.com/u/1191970?v=3","gravatar_id":"","url":"https://api.github.com/users/mgold","html_url":"https://github.com/mgold","followers_url":"https://api.github.com/users/mgold/followers","following_url":"https://api.github.com/users/mgold/following{/other_user}","gists_url":"https://api.github.com/users/mgold/gists{/gist_id}","starred_url":"https://api.github.com/users/mgold/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mgold/subscriptions","organizations_url":"https://api.github.com/users/mgold/orgs","repos_url":"https://api.github.com/users/mgold/repos","events_url":"https://api.github.com/users/mgold/events{/privacy}","received_events_url":"https://api.github.com/users/mgold/received_events","type":"User","site_admin":false},"created_at":"2015-07-13T14:02:50Z","updated_at":"2015-07-13T14:02:50Z","body":"That's true..."}}