{"action":"created","issue":{"url":"https://api.github.com/repos/ceylon/ceylon-spec/issues/1345","labels_url":"https://api.github.com/repos/ceylon/ceylon-spec/issues/1345/labels{/name}","comments_url":"https://api.github.com/repos/ceylon/ceylon-spec/issues/1345/comments","events_url":"https://api.github.com/repos/ceylon/ceylon-spec/issues/1345/events","html_url":"https://github.com/ceylon/ceylon-spec/issues/1345","id":86150419,"number":1345,"title":"allow object declarations and value constructors to have an initial uppercase name","user":{"login":"gavinking","id":579974,"avatar_url":"https://avatars.githubusercontent.com/u/579974?v=3","gravatar_id":"","url":"https://api.github.com/users/gavinking","html_url":"https://github.com/gavinking","followers_url":"https://api.github.com/users/gavinking/followers","following_url":"https://api.github.com/users/gavinking/following{/other_user}","gists_url":"https://api.github.com/users/gavinking/gists{/gist_id}","starred_url":"https://api.github.com/users/gavinking/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gavinking/subscriptions","organizations_url":"https://api.github.com/users/gavinking/orgs","repos_url":"https://api.github.com/users/gavinking/repos","events_url":"https://api.github.com/users/gavinking/events{/privacy}","received_events_url":"https://api.github.com/users/gavinking/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ceylon/ceylon-spec/labels/high%20priority","name":"high priority","color":"d7e102"},{"url":"https://api.github.com/repos/ceylon/ceylon-spec/labels/improvement","name":"improvement","color":"02d7e1"},{"url":"https://api.github.com/repos/ceylon/ceylon-spec/labels/request%20for%20feedback","name":"request for feedback","color":"0b02e1"}],"state":"open","locked":false,"assignee":{"login":"gavinking","id":579974,"avatar_url":"https://avatars.githubusercontent.com/u/579974?v=3","gravatar_id":"","url":"https://api.github.com/users/gavinking","html_url":"https://github.com/gavinking","followers_url":"https://api.github.com/users/gavinking/followers","following_url":"https://api.github.com/users/gavinking/following{/other_user}","gists_url":"https://api.github.com/users/gavinking/gists{/gist_id}","starred_url":"https://api.github.com/users/gavinking/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gavinking/subscriptions","organizations_url":"https://api.github.com/users/gavinking/orgs","repos_url":"https://api.github.com/users/gavinking/repos","events_url":"https://api.github.com/users/gavinking/events{/privacy}","received_events_url":"https://api.github.com/users/gavinking/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/ceylon/ceylon-spec/milestones/11","html_url":"https://github.com/ceylon/ceylon-spec/milestones/1.2","labels_url":"https://api.github.com/repos/ceylon/ceylon-spec/milestones/11/labels","id":798020,"number":11,"title":"1.2","description":"Serialization.","creator":{"login":"gavinking","id":579974,"avatar_url":"https://avatars.githubusercontent.com/u/579974?v=3","gravatar_id":"","url":"https://api.github.com/users/gavinking","html_url":"https://github.com/gavinking","followers_url":"https://api.github.com/users/gavinking/followers","following_url":"https://api.github.com/users/gavinking/following{/other_user}","gists_url":"https://api.github.com/users/gavinking/gists{/gist_id}","starred_url":"https://api.github.com/users/gavinking/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gavinking/subscriptions","organizations_url":"https://api.github.com/users/gavinking/orgs","repos_url":"https://api.github.com/users/gavinking/repos","events_url":"https://api.github.com/users/gavinking/events{/privacy}","received_events_url":"https://api.github.com/users/gavinking/received_events","type":"User","site_admin":false},"open_issues":10,"closed_issues":181,"state":"open","created_at":"2014-09-22T09:55:40Z","updated_at":"2015-06-08T16:11:10Z","due_on":"2014-10-28T23:00:00Z","closed_at":null},"comments":13,"created_at":"2015-06-08T12:08:34Z","updated_at":"2015-06-09T16:06:29Z","closed_at":null,"body":"After some reflection, it seems to me that the language would be more regular and easier to use if `object` declarations, and the new value constructors proposed in #1129 were allowed to have initial-uppercase names, and the previous tradition of giving them initial-lowercase names were deprecated or otherwise discouraged.\r\n\r\nThe reasoning behind this change is:\r\n\r\n1. Writing `\\Itrue` drives us nuts.\r\n2. It makes much clearer the relationship that an `object` is just a `class` with no parameters, and that a value constructor is just a constructor with no parameters. We don't have a case-difference between `value`s and `function`s, which bear the same relationship to each other.\r\n3. It will probably be easier to explain these concepts in the spec.\r\n4. It can be done without breaking backward compatibility.\r\n\r\nArgument against the change include:\r\n\r\n1. It makes it harder to visually distinguish something that is \"just a single value\".\r\n2. We prefer to write `true` and `false`, not `True` and `False`, so we would have both defined in the language module, i.e. `shared Boolean true => True; shared Boolean false => False;`\r\n3. It's a deckchair-moving change that just makes the language appear less stable without introducing any additional expressiveness.\r\n\r\nSome of these objections would be alleviated by just blessing the use of both forms, and leaving it up to the developer to decide whether they want an easily-denotable type or not."},"comment":{"url":"https://api.github.com/repos/ceylon/ceylon-spec/issues/comments/110416792","html_url":"https://github.com/ceylon/ceylon-spec/issues/1345#issuecomment-110416792","issue_url":"https://api.github.com/repos/ceylon/ceylon-spec/issues/1345","id":110416792,"user":{"login":"gavinking","id":579974,"avatar_url":"https://avatars.githubusercontent.com/u/579974?v=3","gravatar_id":"","url":"https://api.github.com/users/gavinking","html_url":"https://github.com/gavinking","followers_url":"https://api.github.com/users/gavinking/followers","following_url":"https://api.github.com/users/gavinking/following{/other_user}","gists_url":"https://api.github.com/users/gavinking/gists{/gist_id}","starred_url":"https://api.github.com/users/gavinking/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gavinking/subscriptions","organizations_url":"https://api.github.com/users/gavinking/orgs","repos_url":"https://api.github.com/users/gavinking/repos","events_url":"https://api.github.com/users/gavinking/events{/privacy}","received_events_url":"https://api.github.com/users/gavinking/received_events","type":"User","site_admin":false},"created_at":"2015-06-09T16:06:29Z","updated_at":"2015-06-09T16:06:29Z","body":"FTR, the visual aesthetics issue is a little complicated:\r\n\r\n- I much prefer `Point.Polar(0.0,0.0)` to `Point.polar(0.0,0.0)`, _especially_ if I `import` it and use it as `Polar(0.0,0.0)` vs `polar(0.0,0.0)`.\r\n- OTOH, I prefer `Array.ofSize(10,null)` to `Array.OfSize(10,null)`.\r\n- And I strongly prefer `new origin extends Cartesian(0.0,0.0)` to `new origin extends cartesian(0.0,0.0)`.\r\n"}}