Skip to content

Comment on Martin Odersky (Scala creator) launches company to commercialize scala and akkaparent

Comments

I disagree. The following all mean the same thing (off the top of my head):

   obj.( (a, b) => a + "." + b)
   obj.(_ + "." + _)
   obj { (a,b) => a + "." + b }
Seems to me that's syntactic sugar. The flexibility of Scala is the source of my love/hate relationship with the language. That being said, it's still my favorite thing to code in when I get the opportunity...

Only the first two mean the same thing, and that is not syntactic sugar, but syntax error:

  error: identifier expected but '(' found.
What you probably meant is that
  a b c
and
  a.b(c)
are the same thing. And admire the effect of the semicolons in http://article.gmane.org/gmane.comp.lang.scala.debate/2231

All three can be used for the same functionality:

scala> object Test { | def myMethod( f:(String,String)=>String) { | println("MyMethod result =" + f("a", "b")) | } | } defined module Test

scala> Test.myMethod( _ + "&" + _ ) MyMethod result =a&b

scala> Test.myMethod( (a,b)=> a+"&"+b ) MyMethod result =a&b

scala> Test.myMethod { (a,b)=>a+"&"+b } MyMethod result =a&b

Optional dots, semicolons and sometimes parenthesis, underscores as placeholders, and interchangeable parenthesis and braces are about the only syntactic sugar in Scala AFAIK. They are really minimal compared to, for example, Python decorator syntax.

for loops are also syntactic sugar and the case class matching thing

    case class Lol (a: Int, b: Int)

    Lol(2, 3) match {
       case x Lol y => x
    }

Scala has to be the worst offender of language complexity I have ever seen. A language isn't supposed to make you feel smart, it's supposed to be easy to read, maintain and write powerful code in. Have you had a look at larger Scala codebases? Every single code line needs to be read consciously, quickly scanning over code is impossible with Scala.

I think you should look at DSLs. Seriously.

You can code a domain specific options parser in scala so that your final code actually looks like this -

"@ $20 spot, price 5 calls, @ $25 strike, 59 days to expiry"

This is as simple as it can get. In fact, the senior quants literally say the above line word for word. So its practically English. Can't get any simpler than that.

Reference: http://www.scala-lang.org/node/1403

How much Scala have you read and written? I hear "xxx is too complicated" quite often, and it's always from people whose experience is having visited the language website once or twice.

Of course code is hard to read if you don't know the language.

I have read a book on the subject. Look at this code and tell me with a straight face that it's easily readable: https://github.com/jdegoes/blueeyes/blob/master/src/main/sca... The sheer amount of weird language tokens is disturbing.

I had a completely different experience. Code is very readable, because it describes what it does and not how.

Readable but not editable. The person editing or debugging your code needs to know how it does it.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.