sub foo($bar!) { say $bar }; foo(42)

On 2017-07-22 11:19:41, alex.jakime...@gmail.com wrote:
> Eh. The effort required to implement the feature is much less than
> having
> discussions *like this*. I'll try to be quick.
>
> “there's large possibility of introducing some unwanted ambiguity
> somewhere”
>
> A good thing to keep in mind indeed.
>
> I don't really like these discussions before actual PRs, but if we
> think about
> it a little bit…
>
> <colonpair> panics if it finds :! but then fails to find <identifier>
> (
>
https://github.com/rakudo/rakudo/blob/fb7ecb60f006b5738bfe7a234535e07344268b31/src/Perl6/Grammar.nqp#L1892
> ), so if there is any ambiguity introduced, then it's not bigger than
> what we
> have with :! already.
>
> I've tried ::!CLASS and it complains about private method !CLASS.
>
> :?foo itself says “Confused … expecting any of: colon pair”, so it
> expects a
> colon pair anyway.
>
> Maybe you have some good examples, but *so far* looks ok.
>
>
> “complex syntax feature”
>
> Let's make this complex feature strangely consistent.
>
>
> “OP came up[^1] with this idea while trying to think of more cases to
> add to
> the catalog of colon uses in Rakudo”
>
> Why does this sound so bad? :) Does it really matter at what point I
> noticed
> that the feature that I always thought was implemented actually isn't?
> I don't
> use colonpairs as often, truthy or falsy, so never noticed before.
>
> However, even the fact that :!foo does not align vertically with :bar
> is enough
> to convince me regarding the usefulness of the proposed feature.
>
>
> “But if we follow that logic, it'd mean:”
>
> What I meant was that we can make it strangely consistent in a useful
> way. Then
> you extrapolated it to unbelievable extents.
>
> Then there are examples that are totally unrelated to the ticket. Even
> ?? !! is
> not in any way strangely consistent (you can't write else { } if { }).
>
>
> I like this definition a lot:
>
> <masak> "strangely consistent" is all about using loose connections
> people have
> in their brains, so that a feature feels syntactically vaguely right
> for
> various reasons.
>
>
> This ticket is not about making colonpairs accept prefix operators. It
> is also
> not about being able to syntactically put ? anywhere you can put !.
> And let's
> also not bring unrelated stuff here (like colonpairs only accepting
> natural
> numbers with *no sign* whatsoever). What kind of derailing kung fu is
> this
> anyway?
>
>
> On 2017-07-22 09:12:31, c...@zoffix.com wrote:
> > On Sat, 22 Jul 2017 07:53:26 -0700, alex.jakime...@gmail.com wrote:
> > > This should work:
> > >
> > > Code:
> > > say (:?foo);
> > >
> > > Result:
> > > ===SORRY!=== Error while compiling -e
> > > Bogus statement
> > > at -e:1
> > > ------> say (:⏏?foo);
> > > expecting any of:
> > > colon pair
> > >
> > >
> > > Because these work:
> > >
> > > Code:
> > > say (:foo);
> > > say (:!foo);
> > >
> > > Result:
> > > foo => True
> > > foo => False
> >
> >
> > -1 from me:
> >
> > 1) Colonpairs are ubiquitous in the language, so there's large
> > possibility of introducing some unwanted ambiguity somewhere and it's
> > hard to predict where it might occur
> > 2) Colonpairs are already one of the most complex syntax feature of
> > the language, requiring beginners to learn a wealth of syntax to
> > understand most of the common code.
> > 3) Given (1) and (2), I'd expect any changes to extend their syntax
> > to
> > carry large benefits, however, the proposal offers literally zero
> > practical use and the OP came up[^1] with this idea while trying to
> > think of more cases to add to the catalog of colon uses in Rakudo.
> > The
> > `?` prefix op at least coerces the already-true arg to Bool (e.g.
> > `?"foo" === True`) but in the case of the colonpair, there's nothing
> > to coerce, so there's absolutely no point in typing the extra `?` and
> > it's unlikely anyone would want to type it.
> > 4) The OP makes the case that this syntax should exist solely for the
> > sake of consistency, by interpreting the `!` in `:!foo` syntax to
> > mean
> > the `!` op, and there exists the `?` op. But if we follow that logic,
> > it'd mean:
> > *) `!! ??` should be allowed too, to mean reverse ternary
> > *) `::!CLASS` should mean `anything but ::?CLASS`
> > *) `has $?foo` should be an alternative to `has $!foo`
> > *) `self?foo` should be an alternative to `self!foo`
> > *) `:-42foo` should parse just as `:42foo` parses
> > The point being that the current syntax is `":"` vs `":!"` not `":"`
> > vs `":" + some op`. And things that have "!" in them do not
> > necessarily need to have a "?" alternative.
> >
> > In summation, there's no practical use of this feature and it is
> > unlikely it'll ever be used in real programs. The colonpair syntax is
> > used across the entire language and any changes to it have large
> > impact. It's very hard to anticipate any problematic ambiguity cases
> > introduction of `?` into colon syntax might have. And given lack of
> > technical benefits of this feature, I do not think we should accept
> > the risks.
> >
> >
> > [1] https://irclog.perlgeek.de/perl6/2017-07-22#i_14907647

Reply via email to