04:21
Ven` joined
04:26
Ven` left
06:52
Ven` joined
11:11
Ven` left
11:55
Ven` joined
|
|||
Ven` | perl6.org/archive/rfc/309.pod | 13:28 | |
that rings a bell | 13:29 | ||
masak | interesting. | 13:44 | |
it reminds Cozens of TeX. it reminds me of Smalltalk. | |||
I guess it reminds you Ven` of that mixfix stuff. | |||
Ven` | it does :P. | 13:50 | |
it also reminds me of is parsed, obviously | 13:57 | ||
masak | I think it's significant that Perl 6 didn't get this in the main language | 13:58 | |
instead it got named arguments/parameters | |||
which are slightly less "wild" (by having colons as obvious markers) but fill the same "visual" need | 13:59 | ||
Ven` | adverbs!!!! | 14:00 | |
masak | adverbs are named arguments' wild cousin, yes | 14:01 | |
Ven` | adverbs are to named args what perl is to ruby :P | ||
the free-form, insane version | |||
masak | did you know we almost got Manhattan distance as an integral part of how multimethod dispatch works in Perl 6? | ||
what we got instead was less powerful, but also much more tractable/reasonable | 14:02 | ||
I'm afraid I can't say the same about adverbs | |||
they seem much more to me like they expect the user to do calculations in their head of a difficulty similar to that of Manhattan distance | 14:03 | ||
Ven` | .oO( CommaIDE will fix it ) :P |
||
masak | my go-to example: `if %h<foo> :exists { ... }` | 14:04 | |
how do you negate this? | |||
well, you change the `if` to `unless`, of course | |||
Ven` | either :! or not | ||
masak | or you add a simple `!`: `if !%h<foo> :exists { ... }` | ||
Ven` | certainly not ! :D | ||
masak | no, certainly not | 14:05 | |
because now your code is broken | |||
let's just say I love features that are "orthogonal" enough so that simple refactors that you expect to have no change on the program actually have no change | |||
adverbs are not orthogonal in that sense | |||
they ride up and down the AST like a boat in a storm | 14:06 | ||
Ven` | except the sea is lava | 14:07 | |
masak | and I claim that in order to even understand what just went wrong in the above case, the developer must have a clear-enough understanding of how operators are lifted into an AST | ||
Ven` | no, I disagree with that | 14:08 | |
masak | whereas in reality most users program at a level of familiarity somewhere around a vague understanding of precedence | ||
I mean, no-one would be happier than I if there's a perfectly trivial way to explain how adverbs work | 14:09 | ||
Ven` | "well, when a term and a colon love each other very much, .." | ||
yeah understanding precedence is very necessary | 14:10 | ||
masak .oO( the adverbs and the bees ) | |||
Ven` | that's for sure | ||
masak | I'm pretty sure I understand how precedence works. I've *still* made the above mistake in earnest -- and immediately understood where I went wrong, but still felt that the *way* I understand it shouldn't really have to come into play. | 14:11 | |
precedence is one of these features where it's only really exposed when it breaks people's expectations | 14:12 | ||
like with ! and instanceof in Java | |||
because the natural tendency is to not want to swap in all the intricacies of precedence | |||
it's less about proficiency actually and more about cognitive load | 14:13 | ||
14:39
Ven` left
14:40
Ven` joined
16:30
Ven` left
|