On Saturday, November 16, 2013 9:41:07 PM UTC-6, Gregory Ewing wrote: > The type system looks very interesting!
Indeed. I went to the site assuming this would be another language that i would never like, however, after a few minutes reading the tour, i could not stop! I read through the entire tour with excitement, all the while actually yelling; "yes" and sometimes even "yes, yes, YES" But not only is the language interesting, the web site itself is phenomenal! This is a fine example of twenty first century design at work. I've always found the Python web site to be a cluttered mess, but ceylon-lang.org is just the opposite! A clean and simplistic web site with integrated console fiddling -- heck, they even took the time to place a button near every example! Some of the aspects of ceylons syntax i find interesting are: Instead of using single, double, and triple quotes to basically represent the same literals ceylon decided to implement each uniquely. Also, back-tick interpolation and Unicode embedding is much more elegant! The use of a post-fix question mark to denote a declared Type that can optionally be null. The ceylon designers ACTUALLY understand what the word "variable" means! Immutable attributes, yes, yes, YES! The multiplication operator can ONLY be used on numerics. Goodbye subtle bug! Explicit "return" required in methods/functions! No "default initialization to null" No omitting braces in control structures (Consistency is the key!!!) The assert statement is much more useful than Python's The "tagging" of iterable types using regexp inspired syntax "*" and "+" is and interesting idea Conditional logic is both concise and explicit using "exists" and "nonempty" over the implicit "if value:" Range objects are vastly superior to Python's lowly range() func. Comprehensions are ordered more logically than Python IMO, since i want to know where i'm looking BEFORE i find out what will be the return value Ceylon: [for (p in people) p.name] Python:[p.name for p in people] Ruby: people.collect{|p| p.name} Ceylon: for (i in 0..100) if (i%3==0) i Python: [i for i in range(100) if i%3==0] Ruby: (1..10).select{|x| x%3==0} Funny thing is, out of all three languages, Ruby's syntax is linear and therefor easiest to read. Ruby is the language i WANT to love but i can't :( due to too many inconsistencies. But this example shines! > It's just a pity they based the syntax on C rather > than something more enlightened. (Why do people > keep doing that when they design languages?) What do you have in mind? Please elaborate because we could use a good intelligent conversation, instead of rampant troll posts. -- https://mail.python.org/mailman/listinfo/python-list