00:29
thegargler left
01:19
frost joined
03:16
Guest35 left
|
|||
CIAvash | design docs refer to `<?>` as predefined subrule that match null string and `<!>`, inverse of `<?>`. design.raku.org/S05.html#line_2153 | 05:17 | |
there is a note in the docs "Note: be mindful of LEAVE phasers directly in blocks of routines, as they will get executed even when an attempt to call the routine with wrong arguments is made" docs.raku.org/language/phasers#LEAVE | 18:27 | ||
But, do you need to write code like that? or is it just an example? | 18:28 | ||
gfldex | m:``` | 18:34 | |
constant l1 = 1, 2 … ∞; | |||
constant l2 = 1, 2 … ∞; | |||
constant concat_l1_l2 = flat(l1, l2).lazy; | |||
say concat_l1_l2; | |||
``` | |||
<@486998692683841566> ^^^ | |||
It may be a bug that `flat` of a (partial) lazy things doesn't return a lazy `Seq`. | 18:36 | ||
piotrklibert | @CIAvash thanks, I missed that note, or maybe didn't connect POST to LEAVE immediately. To answer your question: basically, when learning a new language, one of the first things I want to check is how well does it support Design by Contract. Pre- and post-conditions, along with invariants, are examples of contracts. DbC doesn't replace type checking, although with gradual typing the line can be a | 18:57 | |
m: ```flat(lazy (1 ... 10), ^10).is-lazy``` | 19:01 | ||
Strange, I get True in the REPL | 19:02 | ||
gfldex | That POST blocks are run on the proto seems not to be specced. That note in the docs appears to be an observation. | 19:03 | |
I have not seen PRE or POST be used in the wild. There is no module in the ecosystem that uses them, nor does Rakudo. I'm afraid here be dragons. | 19:04 | ||
Please file any dragons you encounter here: github.com/rakudo/rakudo/issues | 19:05 | ||
piotrklibert | Sure, will do 🙂 | 19:06 | |
I'm not surprised, for some reason Design by Contract is not very well known, probably because its inventor tried to make money off of it for a decade instead of popularizing it. The methodology comes from Eiffel, with currently the most advanced implementations being Ada/SPARK and Racket/Typed Racket. It's going to enter mainstream in... a decade or two, I guess. | 19:08 | ||
It took 30 years for unit tests to gain traction, so it should be similar here. BTW: I get a feeling that in the flood of change programmers very rarely have a chance to advance. 20 - 30 years for a feature to become widely used from first implementation is common. | 19:10 | ||
Anyway, my last question for today: what is the best/proper way of doing renaming imports in Raku? I have `Cro::HTTP::Client` class and I want to be able to refer to it with just `Client`. In Python that would be `import Cro.HTTP.Client as Client` (or more likely `from Cro.HTTP import Client`, but that's another thing), or something like `import Cro.HTTP.{Client => Client}` in Scala. The way I've | 19:20 | ||
MasterDuke | `use Cro::HTTP::Client; constant Client = Cro::HTTP::Client`, raku doesn't (yet) have the equivalent of `import ... as ...` | 19:25 | |
gfldex | raku.land/zef:wukgdu/SelectiveImporting | 19:29 | |
piotrklibert | Thanks, I'll take a look. Though the note: `It modifies the default do_import in Perl6/World.nqp` sounds a bit scary 😄 | 19:30 | |
SmokeMachine | piotrklibert: if you really want it, maybe you could do something like this: glot.io/snippets/g99l0q8tgh | 22:59 | |
gfldex: sorry, I hadn’t seen your suggestion | 23:10 |