>> 1. Create a single language that incorporates the best of functional and imperative programming. Both offer distinct advantages, and we envisioned marrying the two.
Imperative/Functional hybrid are nothing new. C#, Ruby, Python, Javascript, Scala, and Groovy all fit that bill.
>> 2. Codify and statically enforce common shared-memory state patterns, such as immutability and isolation, with minimal runtime overhead (i.e., virtually none).
"Statically enforcing variable immutability...." Isn't that just a fancy word for "constant"?
>> 4. Do all of this while still offering industry-leading code quality and performance, rivaling that of systems-level C programs. Yet still with the safety implied by the above mentioned goals.
He wants to allow for "pockets of imperative mutability tied together with functional tissue". That's not a bad thing but it's not exactly a "safe" feature if put in the wrong hands. Lots of people have written function objects with bad imperative code and side effects. Lots of people have fed them to their language's equivalent of the map function. That can cause bugs.
The strength of this system is that map is type checked to be provably side-effect free. The mapping function is free to internally allocate and mutate objects to get its job done, e.g. a RegexMatcher, but it may not mutate existing (non-isolated) state. This composes transitively, so even wrapping side-effects in abstractions and closures is insufficient to hide them.
> Imperative/Functional hybrid are nothing new. C#, Ruby, Python, Javascript, Scala, and Groovy all fit that bill.
Some of those languages are more functional than others. The Scala creator claims it's 50% imperative 50% functional. Others of those, e.g. C# and Groovy, are closer to 10 or 20% functional.
It a certain degree, beauty is a better indicator than percentages when it comes to how functional a programming language is. Scheme scores high in that regard. Python does okay if you stay moderate in it's usage. Any amount of functional programming in Java tends to be downright ugly and unlikely to pass most code reviews.
>> 1. Create a single language that incorporates the best of functional and imperative programming. Both offer distinct advantages, and we envisioned marrying the two.
Imperative/Functional hybrid are nothing new. C#, Ruby, Python, Javascript, Scala, and Groovy all fit that bill.
>> 2. Codify and statically enforce common shared-memory state patterns, such as immutability and isolation, with minimal runtime overhead (i.e., virtually none).
"Statically enforcing variable immutability...." Isn't that just a fancy word for "constant"?
>> 4. Do all of this while still offering industry-leading code quality and performance, rivaling that of systems-level C programs. Yet still with the safety implied by the above mentioned goals.
He wants to allow for "pockets of imperative mutability tied together with functional tissue". That's not a bad thing but it's not exactly a "safe" feature if put in the wrong hands. Lots of people have written function objects with bad imperative code and side effects. Lots of people have fed them to their language's equivalent of the map function. That can cause bugs.