3 ms·
Pattern matching is a really important feature but I strongly dislike that proposal because it feels like it introduces a bunch of single purpose syntax that's
by phpnode 7y ago
Pattern matching is a really important feature but I strongly dislike that proposal because it feels like it introduces a bunch of single purpose syntax that's going to restrict the ability to evolve the language in future. It feels like it's an addon, not a holistic solution.
I would much, much rather that type annotation syntax gets standardised first, because it is comparatively easy to build pattern matching when that's in place but going the opposite direction is difficult. What is a type if not a pattern?
- pas 7y agoIt seems that only `when` and `->`is the new syntax, no? The arrow seems something that could be replaced with `=>`, but anyway, neither seems to be very restrictive with regards to future syntax. (After all they are only defined in a `case` context, so the can be reused for whatever future purpose outside.) Plus it's a stage1 proposal, meaning it's far from serious. Could you link the type annotation proposal, I can't find it.
- snek 7y agoIn JS, the pattern is the type. That is the point of duck typing.
- SomeOldThrow 7y ago> In JS, the pattern is the type. How do you match against a `Buffer` pattern/type?
- vimslayer 7y agoIn the current proposal, case (value) { when { constructor: Buffer } -> console.log("It's a Buffer!") } that doesn't handle subtying though and doesn't work across realms.
- SomeOldThrow 7y agoOh interesting you can match on that! However I think my point stands that javascript has runtime conceptions of types that go beyond duck typing.