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

Pattern matching is strong typing. It just doesn't assert on a type alone -- it also asserts on the shape of the data itself. Example:

    def handle_data(%{
      customer: %{
        date_of_birth: %NaiveDateTime{} = dob,
        account_balance: %Decimal{} = balance,
        name: name,
        count_purchases: purchases
    }) when is_binary(name) and is_integer(count_purchases) do
    # work with the data here
^ This both asserts on a particular data structure (a map with a "customer" key containing at least those four attributes) and asserts on the types of some of the attributes. I find it pretty handy and practical.


But I concede that strong+static typing eliminates a class of bugs preliminarily. That is unequivocally true.

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