Hacker News new | past | comments | ask | show | jobs | submit login

That's why I like Erlang, it allows for multiple function heads and pattern matching. So these kind of tables are very easy to represent without too much noise:

    f(t, t, t) -> 1;
    f(t, t, f) -> 3;
    f(t, f, t) -> 7;
    f(t, f, f) -> "cucumber";
    f(f, _, _) -> null.
Pretty close to the table, no?

The other example:

    fizzbuzz(N) ->
        case {N rem 3, N rem 5} of
            {0, 0} -> "FizzBuzz";
            {0, _} -> "Fizz";
            {_, 0} -> "Buzz";
            {_, _} -> N
       end.
Here I used a case statement, but it also matches the shape pretty well.

That's valid code, not pseudocode, you can compile it in a module an run it.

Notice how multiple function clauses separated by ; allow much nicer code patches. If a function wasn't working well, instead of adding an if statement inside, you can add another function clause instead.




I personally prefer Elixir but I have to say that the more I use Erlang libraries (like for state machines, trees and graphs) the more I grow fond of it and the more I view both languages as what they really are: a brother and a sister. ^_^


Most, if not all, functional languages support pattern matching: Haskell, OCaml, Clojure, Erlang/Elixir, Purescript, Idris, Elm, etc.


Sure. I just like Erlang in particular and thought it approximated the table format pretty well.




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

Search: