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

Is there any other language that does this? For me the second example doesn't look better than the first one.


I haven't seen this specifically, but I have seen other languages move common top level behaviors within functions into parameter lists.

Ruby, dart, coffescript allow setting of instance variables from the parameter list:

    class Example
      constructor: (@name) ->
        # do stuff

    class Example
      constructor: (name) ->
        @name = name
        # do stuff
Jonathan Blow's language allows the `using` keyword in parameter list, which desugars in much the same way.

I'm personally not a big fan of using this technique for pattern matching, but its better than requiring explicit match blocks everywhere (like Scala and rust).


I haven't seen the feature elsewhere. The second example looks better to me (syntax highlighting helps) and reduces redundancy and indent, but I guess views may vary on this. Good to know!


If your goal is to reduce redundancy than I think a "lambda-case" syntax might be a better fit. As a bonus it also lets you use this feature on anonymous functions!

https://downloads.haskell.org/~ghc/latest/docs/html/users_gu... http://stackoverflow.com/questions/1604270/what-is-the-diffe...


There already is a "lambda-case" syntax. "fact(match) = ..." is sugar for "fact = match -> ...". If one works, then so does the other.

Personally I much prefer the way I do it, because it is more powerful, works in more places, and requires no new syntactic forms.




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

Search: