2021-08-02 [09:02:06.0197] I'm omw to the incubator call - laptop was dead so I gotta wait a minute [09:22:40.0043] My network is very bad and can only hear the sounds and can't see the slides ... šŸ˜‚ [09:24:55.0510] Ah it's too late gonna sleep [09:25:11.0184] Hope here's some summary for the meeting [09:30:07.0658] Jack Works: We are still in meeting, u can dial in [09:43:02.0037] Sorry my network is so unstable, so I will write my comment here. Basically I feel every features in the design are useful but it seems a little bit confusing if use together. I think the syntax is hard, so I hope we can have more use cases so we can test different syntax choices to see the pros and cons of each choice and decide which use cases we should optimize. [09:54:03.0684] And as current discussion (hope I don't misunderstand the discussion), I feel maybe we should optimize the syntax for protocol usage... [10:42:04.0633] Argh fuck me, I didn't put this in my calendar, sorry y'all [11:44:07.0206] HE Shi-Jun: not sure what you mean by "optimize the syntax for protocol usage" - `when ^Foo` (omitting the parens) seems pretty optimized 2021-08-05 [23:54:54.0724] I mean, compare to rust/swift/c#/java (even python), our current syntax seems have more syntax noise: parens, pin operator, `with/as` keywords. [06:59:50.0881] sure, but i don’t think those are apples to apples comparisons, because the languages are all so different. [11:19:51.0384] Python has the `as` keyword and parens (it doesn't *require* them on the top level, and I hope we can land on a syntax that doesn't either, but that's a separate issue). It doesn't have pin/`with`, because it *instead* devotes a different chunk of its syntax to the class-property matcher concept. [11:20:19.0794] All in all, Python and this proposal are *very similar* in overall syntax complexity, essentially equivalent. [11:21:54.0460] Rust has somewhat less, but it's also less powerful, in ways that I think are significant, and it gains some of its simplicity from being able to lean on structural typing, which we have to handle with pin. [11:23:00.0297] I'm not familiar enough with Swift/C# to judge them, but I suspect they're in a similar place - they're either less powerful, have similar syntax weight, or have "less" because they get to rely on a more powerful feature of the language that JS doesn't have access to. [11:37:00.0711] How do we feel about closing some of the older issues that the Champion group seems pretty united against? Like , where the OP really dislikes `if` without a matcher. [12:16:54.0697] I also doubt `if` without matcher, it seems no precedent in other languages. I always think we should have a very strong reason to invent something without precedents. [12:30:59.0166] > <@ljharb:matrix.org> sure, but i don’t think those are apples to apples comparisons, because the languages are all so different. Yeah, of coz every languages have some differences, while they also have similarities. Differences should not mean we can't improve current syntax, especially the goal of pattern match is improve ergonomics. [12:37:48.0163] > <@tabatkins:matrix.org> All in all, Python and this proposal are *very similar* in overall syntax complexity, essentially equivalent. As I know there are many complains about the pep622 in python community, that's also the reason I hope we should be cautious about the syntax :) [15:10:14.0780] If we don’t have a bare if, then people will be forced to do `when (_) if (…)`, and they will do that. Why would we want to knowingly encourage a gross pattern? [15:41:23.0015] Notably, at least a few langs I know that don't have a bare `if` also don't have extra syntax weight on their clauses, so the "non-bare" `if` just has a `_` before it to indicate a throw-away irrefutable match. They clearly don't *need* to allow bare `if` because it's so cheap to just do a match. 2021-08-06 [07:17:13.0526] Actually bare `if`is a little bit confusing --- it's pattern match but not do match at all :) I guess this is why no other languages support bare `if`? [07:39:00.0418] Hmm but if are very useful [07:39:43.0986] If the pattern is hard to represent, a "isT(expr)" can be much more readable [12:54:14.0444] > <@haxjs:matrix.org> Actually bare `if`is a little bit confusing --- it's pattern match but not do match at all :) I guess this is why no other languages support bare `if`? `else` isn't a match either. it's fine. [13:47:07.0588] Bare `if` is exactly as much pattern matching as a bare ident is. [13:49:13.0828] Like I said, in langs where you can write your clauses like `_ if(x) -> ...;`, there's no need for a bare if. But here it's `when (_) if(x) {...}`, so it's annoying enough that letting you drop the do-nothing nine-character prefix is probably worthwhile. 2021-08-19 [09:43:41.0266] how can we get this room added to the TC39 "space" on matrix? [10:18:51.0525] I think a space admin has to do that [10:18:56.0255] I'll dm rob [10:20:04.0132] * I'll dm rob [10:31:09.0280] I believe I have added this room to the space. Please confirm as this UI is confusing... [10:33:45.0619] > <@robpalme:matrix.org> I believe I have added this room to the space. Please confirm as this UI is confusing... yep! it shows up for me. thank you :) [11:20:13.0376] yep, thanks! 2021-08-25 [15:24:30.0387] Does this proposal’s use of `^identifier` for ā€œpinningā€ foreclose any possibility of using `^` as an expression prefix operator in other proposals? [15:35:13.0437] Not *technically* (you'd write `^(^foo)`), but it certainly puts significant pressure against it [16:21:49.0884] Yeah, I’m just worrying about about remaining ASCII punctuators for expression operators, and the pin syntax is fairly specialized to `match`. There’s already been some bikeshedding around keywords or other syntaxes (https://github.com/tc39/proposal-pattern-matching/issues/178). I don’t think anyone has yet pointed out that `^` is the only ASCII symbol left that has no prefix or infix meaning in JavaScript, so we might want to reserve it for a more general use. I dunno though. [16:33:45.0509] That's a pretty good argument for the `${}` syntax suggestion, yeah 2021-08-26 [17:01:22.0666] * Yeah, I’m just worrying about about remaining ASCII punctuators for expression operators, and the pin syntax is fairly specialized to `match`. There’s already been some bikeshedding around keywords or other syntaxes (https://github.com/tc39/proposal-pattern-matching/issues/178). I don’t think anyone has yet pointed out that `^` is the only ASCII symbol left that has no prefix or infix meaning in JavaScript, so we might want to reserve it for a more general use. I dunno though.