{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/8470","labels_url":"https://api.github.com/repos/JuliaLang/julia/issues/8470/labels{/name}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/8470/comments","events_url":"https://api.github.com/repos/JuliaLang/julia/issues/8470/events","html_url":"https://github.com/JuliaLang/julia/issues/8470","id":43838745,"number":8470,"title":"use { } for tuple types?","user":{"login":"JeffBezanson","id":744556,"avatar_url":"https://avatars.githubusercontent.com/u/744556?v=3","gravatar_id":"","url":"https://api.github.com/users/JeffBezanson","html_url":"https://github.com/JeffBezanson","followers_url":"https://api.github.com/users/JeffBezanson/followers","following_url":"https://api.github.com/users/JeffBezanson/following{/other_user}","gists_url":"https://api.github.com/users/JeffBezanson/gists{/gist_id}","starred_url":"https://api.github.com/users/JeffBezanson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JeffBezanson/subscriptions","organizations_url":"https://api.github.com/users/JeffBezanson/orgs","repos_url":"https://api.github.com/users/JeffBezanson/repos","events_url":"https://api.github.com/users/JeffBezanson/events{/privacy}","received_events_url":"https://api.github.com/users/JeffBezanson/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/JuliaLang/julia/labels/breaking","name":"breaking","color":"800000"},{"url":"https://api.github.com/repos/JuliaLang/julia/labels/decision","name":"decision","color":"F08000"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":19,"created_at":"2014-09-25T02:00:15Z","updated_at":"2015-04-17T14:11:52Z","closed_at":null,"body":"@jakebolewski had this very good idea today.\r\n\r\nOur tuple types are currently quite ugly since they are not distinguished from tuple values. This causes various problems in the system, such as whether to treat `()` as a type. We also need to specialize tuple representations (e.g. storing `(Float64,Float64)` as compactly as a `Complex128`), which means tuple types will need to contain extra layout information that tuple values do not have. This would also eliminate the need for a fancy predicate to test whether some tuple is a type.\r\n\r\nIt would be quite easy to use `Union{...}` for union types, and then all types would be constructed with curly braces :+1:.\r\n\r\nThis change also makes it easy to use `(x, y...)` for splatting in tuple construction (#4869), and `{Int...}` for varargs types.\r\n\r\nAll current uses of `{ }` can be replaced with `Any[ ]` or `(Any=>Any)[ ]`, so that syntax is effectively up for grabs. The wastefulness of the current `{ }` has been discussed elsewhere. I admit this proposal feels slightly wasteful as well, but it could be worth it for solving various problems in the type system and making type syntax highly consistent. On the whole, I am in favor of this idea."},"comment":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/comments/93993619","html_url":"https://github.com/JuliaLang/julia/issues/8470#issuecomment-93993619","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/8470","id":93993619,"user":{"login":"StefanKarpinski","id":153596,"avatar_url":"https://avatars.githubusercontent.com/u/153596?v=3","gravatar_id":"","url":"https://api.github.com/users/StefanKarpinski","html_url":"https://github.com/StefanKarpinski","followers_url":"https://api.github.com/users/StefanKarpinski/followers","following_url":"https://api.github.com/users/StefanKarpinski/following{/other_user}","gists_url":"https://api.github.com/users/StefanKarpinski/gists{/gist_id}","starred_url":"https://api.github.com/users/StefanKarpinski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/StefanKarpinski/subscriptions","organizations_url":"https://api.github.com/users/StefanKarpinski/orgs","repos_url":"https://api.github.com/users/StefanKarpinski/repos","events_url":"https://api.github.com/users/StefanKarpinski/events{/privacy}","received_events_url":"https://api.github.com/users/StefanKarpinski/received_events","type":"User","site_admin":false},"created_at":"2015-04-17T14:11:52Z","updated_at":"2015-04-17T14:11:52Z","body":"Can't you do that just by writing methods that convert tuples to tuple types?"}}