Standardizing conditional try/catch

Michael J. Ryan tracker1 at gmail.com
Sun Mar 19 22:15:32 UTC 2017


Along a similar vein, is it time to discuss optional typing a la
flow/typescript which seem to be going a very similar direction with
different tooling?

Though I'm really unsure about the need/bloat beyond tooling and kind of
feel that generic expression support for catch blocks may be enough.

-- 
Michael J. Ryan - tracker1 at gmail.com - http://tracker1.info

Please excuse grammar errors and typos, as this message was sent from my
phone.

On Mar 19, 2017 8:24 AM, "kdex" <kdex at kdex.de> wrote:

> Well, there has been some discussion of potentially adding something like
> static type hints at some point in the future.
> Pattern matching is a feature that inevitably requires type information at
> runtime.
>
> So as long as the "optional typing" story isn't dead, I would assume that
> pattern matching isn't quite dead either, it's just not in the currently
> possible scope of things.
> ECMAScript wouldn't be the only language which would have taken years to
> come around to implementing type hinting: IIRC Python got its type hinting
> feature pretty late, too.
>
> On Sunday, March 19, 2017 4:22:26 PM CET Michał Wadas wrote:
> > Is there a serious push to add pattern matching to language? Does any
> > popular dynamically typed language have pattern matching?
> > I read that TC39 agreed on adding pattern matching to language in March
> > 2013. 4 years later we don't have even stage 0 proposal - so I would
> > consider it to be a dead end or wishful thinking.
> >
> > On Sat, Mar 18, 2017 at 5:16 PM, kdex <kdex at kdex.de> wrote:
> >
> > > I'm not sure if embedding this idea into the language will make future
> > > ideas about true pattern matching harder to implement or not.
> > > Destructuring assignments are pretty slow from what I've measured, and
> > > they still made it in, so I hardly see performance being a showstopper
> here.
> > >
> > > On Saturday, March 18, 2017 12:18:22 PM CET Michael J. Ryan wrote:
> > > > The if condition doesn't need to be limited to instance of...
> > > >
> > > > catch (err if !isNaN(err.status))
> > > >
> > > > Aside: entering code in a phone is hard...
> > > >
> > > > > `instanceof` doesn't work across realms (iframes, for example). If
> we
> > > > > introduced conditional catch blocks, I'd want a more reliable
> matching
> > > > > mechanism than instanceof.
> > > > >
> > > > > On Fri, Mar 17, 2017 at 5:01 PM, Zach Lym <zachlym at indolering.com>
> > > wrote:
> > > > >
> > > > >> Firefox supports the following conditional `catch` syntax:
> > > > >>
> > > > >>     try {
> > > > >>         let result = await ();
> > > > >>     } catch (e if e instanceof ErrorType) {
> > > > >>         ...
> > > > >>     }
> > > > >>
> > > > >>
> > > > >> This was originally implemented in Spidermonkey as part of an ES
> > > proposal
> > > > >> around 2000, but it was rejected for unknown reasons [0]. A 2012
> > > email to
> > > > >> this list suggesting standardization of the syntax was passed
> over in
> > > favor
> > > > >> of waiting for a generic pattern matching facility [0][1].  Later
> > > > >> discussion suggests that the pattern matching proposal would have
> > > been very
> > > > >> slow [2]. A proposal for a Java-like type-based conditional was
> > > proposed in
> > > > >> 2016, but was criticized for lacking generality [2].
> > > > >>
> > > > >> If the above summary is accurate, I would like to try to
> standardize
> > > the
> > > > >> vanilla syntax once again.  It's imperative, general, and doesn't
> > > preclude
> > > > >> the use of any hypothetical pattern matching functionality.
> > > > >>
> > > > >> Javascript's control flow has improved dramatically in recent
> years:
> > > > >> promises got rid of callbacks, `async`/`await` clipped promise
> > > chains, and
> > > > >> classes make it easy to create custom Error objects that preserve
> > > > >> stacktraces.  Conditional catch is the last bit of syntax needed
> to
> > > make JS
> > > > >> look like it was designed to handle asynchronous functions.
> > > > >>
> > > > >> Thoughts?
> > > > >>
> > > > >> -Zach Lym
> > > > >>
> > > > >> [0]: https://esdiscuss.org/topic/conditional-catch-clause#
> content-10
> > > > >> [1]: https://esdiscuss.org/topic/conditional-catch
> > > > >> [2]: https://esdiscuss.org/topic/error-type-specific-try-catch-bl
> > > > >> ocks#content-14
> > > > >>
> > > > >> _______________________________________________
> > > > >> es-discuss mailing list
> > > > >> es-discuss at mozilla.org
> > > > >> https://mail.mozilla.org/listinfo/es-discuss
> > > > >>
> > > > >>
> > > > >
> > > > > _______________________________________________
> > > > > es-discuss mailing list
> > > > > es-discuss at mozilla.org
> > > > > https://mail.mozilla.org/listinfo/es-discuss
> > > > >
> > > > >
> > > >
> > >
> > > _______________________________________________
> > > es-discuss mailing list
> > > es-discuss at mozilla.org
> > > https://mail.mozilla.org/listinfo/es-discuss
> > >
> > >
> >
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20170319/171f0bf1/attachment-0001.html>


More information about the es-discuss mailing list