Re: Phasers Suggestions

2021-12-15 Thread Timothy Nelson
Thanks for your feedback, all.

Elizabeth, I've posted this on problem-solving, as suggested, as
https://github.com/Raku/problem-solving/issues/308 .  Thanks!

yary, definitely good feedback, and I agree that I've probably attached
these things to the wrong object(s); that part of the proposal never felt
quite right to me, but I don't know enough to know what I'm missing.  I've
amended the document slightly (see intro to the Iterating section over on
problem-solving) to include part of your suggestion, but feel free to
re-make your point over there.

Clifton:
- I assumed that the "when False" construct would match False against the
topic, but maybe I'm wrong.
- Regardless, I've incorporated all your suggestions into the document.
- My only query would be, would it work just as well to say "when not
.block-fine"?
- Your point about not limiting the smartmatching is very much a part of
the point I was trying to make.  More options for everyone :) .

Thanks all!

On Mon, 13 Dec 2021 at 09:53, Clifton Wood  wrote:

> Tim,
>
> Love the suggestions, but some of the syntax is a little confusing. Let me
> see if I can reword these a bit:
>
> First off, the good:
>
> BEGIN {} COMPILE ENTER {}
>
> CHECK {} COMPILE LEAVE {}
>
> INIT {} RUNTIME ENTER {}
>
> END {} RUNTIME LEAVE {}
>
> DOC * DOC * (No change)
>
> ENTER {} ENTER {} (No change)
>
> LEAVE {} LEAVE {} (No change in syntax)
>
>
> Great! These remove a lot of the ambiguity of things.
>
> KEEP {} LEAVE { .success and do {} }
>
> UNDO {} LEAVE { .success or do {} }
>
>
> Took me a minute to realize you are using &?BLOCK as the topic here. Yes,
> you did mention this from the start, but I am a firm believer that code
> should be as intuitive as possible, and this is not. I would almost
> prefer that this were spelled out, precisely for this reason.
>
> FIRST {} ENTER { once {} }
>
>
> Not bad!
>
>
>> NEXT {} LEAVE .iter-done { when False {} }
>
>
> Here's the first I have serious issues with. For one thing "when False {}"
> is a no-no. It will NEVER evaluate. You'd have to use "when False.so.not".
> Having this here just makes things too confusing.
> I think a better rewrite would be:
>
> LEAVE { when .iter-done.not { } }
>
> Which sums things up more concisely.
>
>
>> LAST {} LEAVE .iter-fine { when True {} }
>
>
> Same thing, here. Better written as:
>
> LEAVE { when .iter-fine { } }
>
>
>> PRE {} ENTER { assert {} }
>
> POST {} LEAVE { assert {} }
>
>
> Also good
>
>
>> CONTROL {} LEAVE .block-done { when X::Control {} }
>
>
> Again, the compound use of a method and a when block makes things too
> confusing. Better written as:
>
> LEAVE { when .block-done ~~ X::Control { } }
>
>
>> CATCH {} LEAVE .block-fine { when False {} }
>
>
> Same situation with the nested when. Better written as:
>
> LEAVE { when .block-fine.not { } }
>
> QUIT {} LEAVE .iter-fine { when False {} }
>
>
> Same as above. Better written as:
>
> LEAVE { when .iter-fine.not { } }
>
>
>> LAST {} LEAVE .iter-fine(CX::Done) { when True {} }
>
>
> Better written as:
>
> LEAVE { when .iter-fine(CX::DONE) { } }
>
>
>> CLOSE {} LEAVE .iter-done { when CX::Done {} }
>
>
> Better written as:
>
> LEAVE { when .iter-done ~~ CX::Done { } }
>
>
>> COMPOSE {} COMPOSE ENTER { }
>
>
> Finally, this one I'd just leave as COMPOSE since there doesn't seem to be
> a corresponding LEAVE
>
>  And now, once you look at the above, you'll notice that *don't really
> have to limit the smartmatching*. So these:
>
> (CONTROL) LEAVE { when .block-done ~~ X::Control { } }
> (LAST) LEAVE { when .iter-fine(CX::DONE) { } }
> (CLOSE)  LEAVE { when .iter-done ~~ CX::Done { } }
>
> *could *become more useful as specialized exception handlers.
>
> Just a thought.
>
> Thanks for presenting these! You should definitely pass these on to
> Raku/problem-solving
>
> - Xliff
>
>
> On Sun, Dec 12, 2021 at 1:52 PM Elizabeth Mattijsen 
> wrote:
>
>> I suggest making this a problem-solving issue:
>> https://github.com/raku/problem-solving
>>
>> > On 11 Dec 2021, at 05:48, Timothy Nelson  wrote:
>> >
>> > Hi all.
>> >
>> > I've been lurking on this list for years (and once won an "oldest
>> resurrected conversation" award).  I've loved Raku conceptually since the
>> start, but have only recently been putting it to much use.  Mostly, the
>> reality is as good as the promises, but there are two areas I have been
>> liking a bit less.  One of these is Phasers.  The idea is a great one, but
>> after going to them numerous times and often not finding what I want, I've
>> come to the conclusion that they need some remodelling.
>> >
>> > That's a big step in a language that's been around for a while like
>> Raku has.  Maybe this is a discussion for the Raku 2.0 standard (if there
>> will be such a thing), or maybe it's something that can be introduced over
>> time (or as a Slang, or something).  Anyway, after thinking about them for
>> a while, and having my thoughts coalesce into a document over the last few
>> days, I thought I'd 

The SF Perl Raku Study Group, 12/19 at 1pm PDT

2021-12-15 Thread Joseph Brenner
James Baldwin, "The Fire Next Time" (1963):

  "In all jazz, and especially the blues, there is something tart
  and ironic, authoritative and double-edged. White Americans seem
  to feel that happy songs are happy and sad songs are sad, and
  that, God help us, is exactly the way most white Americans sing
  them ..."


The Raku Study Group

December 19, 2021  1pm in California, 9pm in the UK

Zoom meeting link:
  https://us02web.zoom.us/j/82770320540?pwd=L1hscy9wVDhobFFwZWFmQksrZDliZz09

Passcode: 4RakuRoll

RSVPs are useful, though not needed:
  https://www.meetup.com/San-Francisco-Perl/events/282697483/