Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Actually, 'code' isn't a function - that would require different syntax for declaration and usage:

  def dont(code: () => Unit) = // ...
  dont { () => println("foo") }
It's actually a lazily-evaluated parameter of type Unit - Scala has optional laziness. This means rather than having to pass in a no-arg anonymous function (which requires the "() => expr" syntax as above) you can just pass an expression, and it's evaluated when (and if) needed instead of when it's passed to the "dont" method.

Laziness is the reason that this looks like a control structure, and not just a regular old higher-order function.



Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: