Scala is Not a Functional Programming Language(enfranchisedmind.com)
enfranchisedmind.com
Scala is Not a Functional Programming Language
http://enfranchisedmind.com/blog/posts/scala-not-functional/
9 comments
He speaks to the currying syntax directly in the comments. The important distinction is that the "nice" Scala syntax for currying requires that you allow for it when you write your functions. That's not really broadly useful, though it can pretty up some applications.
From reading Odersky's book Scala's notion of currying functions i.e. f(x:Int)(y:Int) is differentiated from partially applied functions. Here is his currying example using a partially applied x():
def x(a:Int, b:Int) = a + b
val y = x(1, _:Int) // y is a partially applied function
y(2)
==========
Much better looking than his snippet:
def x(a:Int, b:Int) = a + b
def y = Function.curried(x _)(1)
y(2)
def x(a:Int, b:Int) = a + b
val y = x(1, _:Int) // y is a partially applied function
y(2)
==========
Much better looking than his snippet:
def x(a:Int, b:Int) = a + b
def y = Function.curried(x _)(1)
y(2)
I remember it initially being described as a hybrid language, but obviously the functional features and idioms stick out more to the Java community, so it's going to be described as functional.
I do wonder why Scala requires 'def' to be within a class/body (it could just create an implicit object inheriting from FunctionX)
Also, destructuring pattern matching does require language support (the linked example only involves simple predicates)
I do wonder why Scala requires 'def' to be within a class/body (it could just create an implicit object inheriting from FunctionX)
Also, destructuring pattern matching does require language support (the linked example only involves simple predicates)
I've been hacking in Java, Ruby, and Haskell for some time and when I started learning Scala, I quickly came to the conclusion that it was much more like Ruby than it is like Haskell.
...not that there's anything wrong with that. I love the conciseness of Scala compared to Java and, even if it's not as elegant as a pure functional language, it seems like a great language for Getting Things Done.
I wonder if by the author's standards lisp/scheme were a functional language?
anuo520(1)
I appreciate informed criticisms like this, but he is definitely representing Scala in as poor a light as possible.