| - union and intersection types
-- I'll have to read up on this - an elegant and powerful representation of tuple and function types
-- Okay, Kotlin could do with this - reified generics
-- This is apparently expensive on the JVM: http://blog.jetbrains.com/kotlin/2014/12/m10-is-out/ - the cleanest solution to the problem of null
-- I think saying that `String? x = "abc"` is cleaner than `var b: String? = "abc"` is subjective.
-- Does Ceylon have Safe Casts? https://kotlinlang.org/docs/reference/null-safety.html - awesome modularity
-- Something I'll need to look into - a language module [that] completely abstracts the underlying runtime, and offers a set of elegant APIs that vastly improve on those available natively
-- I guess the improvement in abstraction comes from the Reified Generics
-- Have you got any examples of where the API is superior to that of the Kotlin one? For example, with Kotlin's extension functions Java File object has been extended with a readLines() function that returns all of the lines of a File as a List. I was impressed when I saw that. Underneath it is doing the usual BufferedReader and InputStream boiler plate work that you would normally write in Java. - a language specification
-- https://kotlinlang.org/docs/reference/ |
- Kotlin does not have tuples, and doesn't allow abstraction over function -arity. So no, it can't to that.
- Reified generics are simply not expensive, at least not the way Ceylon implements them. But sure, Ceylon's reified generics were implemented by Stef Epardaud who is the best programmer I've ever worked with, so I can understand if some other people find them difficult to implement efficiently.
- I'm not talking about syntax. Syntax is uninteresting. I'm talking about semantics. In Ceylon, optional types are a trivial syntax sugar for a union type, not a hacked-in special case in the type system, as they are in Kotlin, and that means that I can do more with them, for example they naturally combine with union and intersection types to do useful things.
- Your link to documentation for Kotlin does not include any specification for the language. Do you know what the word "specification" means in this context?
Finally, I strongly recommend that you take the time to read the Ceylon documentation and inform yourself about the language. You'll find lots of really interesting ideas and information in there, and I'm certain you'll love the language!