Comment

Comment by Kamq

> But you need pattern matching and other techniques...

The go way to do this would be:

    switch {
        case errors.Is(err, outOfDiskSpaceError):
        // handle out of disk space error
        case errors.Is(err, lackOfPermissionsError):
        // handle lack of permissions
        ...
        default:
        // do the equivalent of the `_` case in a scala match statement or `t` in a lisp cond
    }
Which is roughly as readable as scala/rust's match statements. Moreso if someone tried to get cute in scala and bind both the object as a whole and parts of it at the same time ( something like `case x @ Type(_, _, y, _)` ) or when people get real cute with the unapply method.

I mean, I like scala. It's fun. But I would never say it's more readable than go. I've been left to support things that happen when a team of average intelligence devs get a hold of it.

You're also really comparing an MIT and New Jersey style solution here, and judging them both on MIT merits. And I don't think that's exactly a fair argument.

parent Kamq 3 years ago

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton