»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by diakopter on 6 April 2013.
00:03 LlamaRider joined
BenGoldberg r: my $t = now; my $a = "a"; $a !eq '' for ^50000; say now - $t; 00:07
p6eval rakudo 460c2a: OUTPUT«1.53003199␤»
BenGoldberg Why does !eq take more time than (...eq...).not? 00:11
Aren't they eqivilant?
sorear you may be seeing an inliner fail 00:15
I think it actually expands to METAOP_NEGATE(&infix<eq>)(..., ...) 00:19
BenGoldberg It's too bad there's no perl6 deparser, then we'd be able to figure this out so much faster ;) 00:21
sorear there used to be one 00:23
perl6 --target=past
I don't know if it works currently
BenGoldberg r: my $t = now; my $x = [||] ^50000; say now - $t; say $x; 00:33
p6eval rakudo 460c2a: OUTPUT«2.4516726␤1␤»
BenGoldberg r: my $t = now; my $x = [||] ^5; say now - $t; say $x;
p6eval rakudo 460c2a: OUTPUT«0.04418566␤1␤»
00:34 edgeuplink joined 00:35 dayangkun left
BenGoldberg Should perl be smart enough to recognize that the result will be the same regardless of the list size? 00:36
00:40 berekuk left
flussence r: my $x = [||] ^50000; say now - INIT now; say $x 00:42
p6eval rakudo 460c2a: OUTPUT«2.4724528␤1␤»
00:42 edgeuplink left
flussence r: my $x = so any(^50000); say now - INIT now; say $x 00:42
p6eval rakudo 460c2a: OUTPUT«1.53298694␤True␤»
flussence one place junctions are actually faster at something 00:43
BenGoldberg How would I do the following... 00:44
r: my @a = rand .. *; my @b = rand..*; my @c := @a Z<=> @b; so any(@c); 00:45
japhb_ sorear, BenGoldberg: too see the AST, you need `perl6 --target=ast` now (s/past/ast/ in other words)
BenGoldberg ... but without it timing out?
p6eval rakudo 460c2a: OUTPUT«(timeout)»
BenGoldberg japhb_, can the p6eval be adjusted so we can ask it for an AST? 00:46
japhb_ BenGoldberg, in theory yes, but the AST is much too large to display directly in channel for even relatively trivial programs. 00:47
It would have to nopaste somewhere and display a link to that.
And I don't think p6eval knows how to nopaste yet.
BenGoldberg Ok. 00:48
japhb_ BenGoldberg, here's an example for you: gist.github.com/japhb/a2982ac96a6e25bea0ae 00:49
BenGoldberg Hmm, I think I'm using the zip operator incorrectly.... 00:50
r: my @a := rand .. *; my @b := rand..*; my @c := @a Z<=> @b; .say for @c[^15]; 00:51
p6eval rakudo 460c2a: OUTPUT«Increase␤Increase␤Increase␤Increase␤Increase␤Increase␤Increase␤Increase␤Increase␤Increase␤Increase␤Increase␤Increase␤Increase␤Increase␤»
BenGoldberg Surely they shouldn't all be the same
00:52 rking left
japhb_ BenGoldberg, what you're specifying is a range that starts at a random number. Did you instead want an infinite sequence of random numbers? 00:52
00:52 rking joined
BenGoldberg Yes 00:52
japhb_ r: my @a := rand xx *; my @b := rand xx *; my @c := @a Z<=> @b; .say for @c[^15];
p6eval rakudo 460c2a: OUTPUT«Increase␤Increase␤Decrease␤Decrease␤Increase␤Decrease␤Decrease␤Increase␤Decrease␤Decrease␤Increase␤Increase␤Decrease␤Increase␤Decrease␤»
BenGoldberg Thanks. 00:53
japhb_ np
BenGoldberg And what's a good way of specifying the first non-false value of a potentially infinite list? 00:56
japhb_ I'm not sure what you mean by 'specifying'. What's your use case?
xilo mm red ale 00:58
BenGoldberg Suppose we've got @a, @b, and @c as in that last bit of code. If @c[0] is Decrease or Increase, use that value. If @c[0] is Same, examine @c[1]. If @c[1] is not Same, use that value. If @c[1] is same, look at @c[2]... 00:59
01:00 arlinius left
BenGoldberg Now, I know that in this example, the odds of @c[0] being Same are absurdly small, but in some other situation it might be different. 01:00
japhb_ BenGoldberg, you're looking for the first $i for which @c[$i] is true? 01:01
BenGoldberg Even simpler than that, the first @c[$i] which is true 01:02
japhb_ oh, then just use @c.first(*.so)
BenGoldberg What is .so ? 01:04
japhb_ booleanize, essentially 01:05
"return truth value"
01:07 Chillance joined 01:08 anuby joined, shinobicl joined 01:10 FROGGS_ joined, japhb_ left 01:11 tgt left 01:14 FROGGS left 01:18 average joined 01:20 LlamaRider left 01:24 Psyche^ joined 01:27 Patterner left, Psyche^ is now known as Patterner 01:32 kbenson left, Rix left 01:36 Vlavv_ joined, Vlavv left 01:39 rom1504 left, rom1504 joined, Rix joined 01:41 shinobicl left 01:53 isBEKaml joined 02:13 lustlife joined, isBEKaml left 02:17 gdey left 02:19 dayangkun joined 02:32 daniel-s_ joined 02:35 daniel-s left 02:45 orafu left, orafu joined 02:48 preflex_ joined, preflex left 02:49 preflex_ is now known as preflex
xilo hmm need something to do 02:50
02:53 BenGoldberg left 03:03 daniel-s_ is now known as daniel-s 03:12 cognominal__ left 03:26 arlinius joined
labster xilo: if you're bored, you can always write a module. Do whatever's fun, or get an idea from here: github.com/japhb/perl6-most-wanted...modules.md 03:29
japhb labster, not my personal fork please -- use the one in the perl6 organization 03:43
labster right, sorry. It's just what I have in my browser history 03:44
use this one: github.com/perl6/perl6-most-wanted...modules.md 03:45
japhb :-)
dalek c: ed21f21 | (Graham Todd)++ | app.pl:
Make app.pl run again by updating Mojolicious syntax (->root is now ->static).
labster just sent his very first pull request to rakudo o/ 03:50
gtodd oops make that ->root is now ->paths)
I hate immortalizing typoos 03:51
labster ilbot is watching you 03:52
diakopter yeah but it has a memory hole too 03:57
japhb
.oO( THERE IS A HOLE IN YOUR MIND. )
03:58
sorear stares deep into the hole in japhb's mind 04:21
japhb considers whether the presence of a mind outside the hole limits creates resonant frequencies in the hole that result in the Casimir effect trying to close the hole ever so gently. 04:26
gtodd from the REPL how do I laod/eval a bunch of *.p6 files in my $HOME that load convenience functions eval(slurp "file.p6") ?? 04:28
dalek p: a9ef906 | (Geoffrey Broadwell)++ | src/QAST/Operations.nqp:
Fix nqp::copy to use File instead of OS from Parrot
04:29
p: 8a6373f | (Geoffrey Broadwell)++ | src/QAST/Operations.nqp:
Add missing CCLASS_PRINTING and CCLASS_GRAPHICAL; remove duplicate definition of CCLASS_NEWLINE
kudo/nom: 3e1b44f | (Geoffrey Broadwell)++ | tools/build/NQP_REVISION:
Bump NQP_REVISION for fixes to nqp::copy and some CCLASS constants
04:30
japhb Hopefully the above are correct; the builds are taking FOREVER on this box, so I'm crossing my fingers and being brave. :-) 04:31
gtodd eval(slurp "file.p6") does not seem to produce the same effect as typing the functions into the REPL ... I guess I need to make a .pm and "use"it? 04:36
04:50 eternaleye left, kaleem joined 04:57 dsog joined 04:58 mtk left 04:59 frdmn left 05:11 mtk joined 05:17 gdey joined 05:20 dayangkun left
japhb panda works again \o/ 05:25
labster \o/ 05:26
05:29 berekuk joined 05:30 berekuk left 05:36 berekuk joined
diakopter \o/\/o 05:37
labster (o.o) 05:38
05:38 drbean left, berekuk left 05:40 drbean joined 05:41 dayangkun joined 05:51 mtk left
moritz \o 05:51
05:52 rindolf joined
sorear o/ 05:52
japhb: yay
05:57 Chillance left 06:03 mtk joined 06:05 kurahaupo left 06:09 eternaleye joined 06:21 dsog left 06:39 FROGGS_ left 06:41 domidumont joined 06:48 lizmat joined 06:52 FROGGS_ joined 06:56 FROGGS_ is now known as FROGGS 06:59 lizmat left 07:00 lizmat joined 07:02 SamuraiJack joined 07:03 anuby_ joined 07:05 anuby left 07:08 domidumont left 07:11 domidumont joined
timotimo oh, the nqp::copy mistake i made was quite simple. thanks for fixing it for me! 07:12
japhb++
07:17 kurahaupo joined 07:20 lizmat left, frdmn joined 07:27 mangala joined
timotimo "[Update: It turns out that the returns property just constrains the return type as seen by the routine, and not the return type seen by the rest of the world. Use the type prefix or arrow form to declare a return type that is seen by the rest of the world, and in particular any type inferencing engine. We call that the of type to distinguish it from the where type that is specified by the returns property.]" - is this still accurate? 07:38
07:49 sqirrel joined 08:00 berekuk joined 08:01 dayangkun left
labster r: r: say "foo".path.WHAT; say IO::Path.WHAT; 08:01
p6eval rakudo 3e1b44: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/EFXVq8Fuo2:1␤------> r⏏: say "foo".path.WHAT; say IO::Path.WHAT␤ expecting any of:␤ argument list␤ postfix␤ infix stopper␤ infix or meta-infix␤ statem…
labster pastefail
r: say "foo".path.WHAT; say IO::Path.WHAT;
p6eval rakudo 3e1b44: OUTPUT«(IO::Path)␤Could not find symbol '&Path'␤ in method <anon> at src/gen/CORE.setting:10771␤ in any at src/gen/Metamodel.pm:2504␤ in any find_method_fallback at src/gen/Metamodel.pm:2492␤ in any find_method at src/gen/Metamodel.pm:939␤ in block at /tmp/3MujuaL1…
08:02 berekuk left
labster p6evalfail 08:02
FROGGS r: say IO.new
p6eval rakudo 3e1b44: OUTPUT«IO is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:2␤ in method new at src/RESTRICTED.setting:17␤ in block at /tmp/IVzZVrdyYi:1␤␤»
FROGGS ENOTALLOWED
08:02 berekuk joined
labster say "foo".IO 08:03
r: say "foo".IO
p6eval rakudo 3e1b44: OUTPUT«IO.new(ins => 0, chomp => Bool::True, path => "foo")␤»
labster unless you ask nicely :)
FROGGS :o) 08:04
08:04 BigBear joined, berekuk left
hoelzro morning, Perl 6 folk! 08:09
labster Made my first commit to rakudo today to try to speed up infix:<ne>, only to have pmichaud++ tell me the behavior was wrong. So instead, I'm finding bugs based on that behavior.
FROGGS morning hoelzro
labster r: multi infix:<eq> (Int $a, Int $b) { $a * $b == 0 }; say 1 eq 0, 1 ne 0, 1 !eq 0;
p6eval rakudo 3e1b44: OUTPUT«TrueTrueFalse␤»
sorear labster: oy, the junction case? 08:10
labster ne is supposedly defined as !eq
yeah, the junction case
but it's manifesting here.
Though I'm not sure that this is any more sane... (ignoring the obvious insanity of my eq definition). 08:11
sorear yeah, ne = !eq
I ran into that one with niecza too 08:12
fun :D
08:17 edgeuplink joined 08:22 fhelmberger joined
labster thanks for the sympathy, sorear. 08:24
oh edge cases, when will they ever stop ruining my perfect code? 08:25
08:30 berekuk joined 08:32 berekuk left, kresike joined
kresike hello all you happy perl6 people 08:32
08:33 average is now known as below_average
jnthn morning, #perl6 o/ 08:33
08:33 below_average is now known as average
FROGGS hi kresike, jnthn 08:34
o\
kresike FROGGS, jnthn o/
08:39 domidumont left 08:44 fgomez left, kaleem left 08:46 sqirrel left 08:47 kaleem joined 08:49 average left 08:50 lizmat joined 08:51 kurahaupo left, domidumont joined 08:56 fgomez joined 08:59 lizmat left 09:01 lizmat joined
mathw_ o/ 09:06
09:06 mathw_ is now known as mathw, huf left
mathw semi-returns from broken-laptop-induced absence that was largely indistinguishable from the usual lurking 09:07
timotimo :)
jnthn o/ mathw
09:08 berekuk joined
mathw I have discovered that one of the most terrible sounds I've ever heard is the beep code that a Lenovo ThinkPad uses to tell you that its system board is broken 09:08
Especially when it's my ThinkPad
I know there are more terrible sounds, but I hope never to hear any of those 09:09
tadzik the worse sound my thinkpad gave is the "power cord (un)plugged" beep 09:10
it's horrible on 1AM with headphones on, when the power supply station thinks it's a good time to do a second-long maintenance 09:11
mathw Ow
timotimo yeah, that thing is LOUD
tadzik of course it goes full volume 09:12
mathw Yeah mine did it a lot the other week when one of my power supplies succumbed to a loose internal connection
I'm not ruling out that as a contributing factor in the death of the motherboard
Well of course
because you really need to know that
tadzik luckily you can turn it off
mathw oh can you? I shall have to remember that when my new ThinkPad arrives
tadzik it's in bios settings somewhere on my sl500 09:13
mathw excellent
tadzik which is almost-not-a-thinkpad though
mathw well it's worth a look
tadzik it has ideapad firmware inside, iirc, so it may be different
mathw I'm getting a T430 :)
tadzik I'm considering x230 or something, but there's barely anything besides trackpoint that makes me want to buy a thinkpad 09:14
09:14 edgeuplink left
mathw according to the original estimates it should be coming early next week... 09:14
tadzik they don't even have always-on usb
mathw I've never seen a need for that
but I do need a trackpoint
tadzik phone battery pack when you go geocaching
bonsaikitten tadzik: you would not like the X121e and related models
mathw no matter how good the trackpad might be on a laptop, the trackpoint is closer to the home row. Far more convenient 09:15
bonsaikitten mathw: trackpads have this amazing feature of picking up my hands from a centimeter or two away
mathw bonsaikitten: that sounds entertaining
bonsaikitten it makes focus-follows-mouse completely futile and has the precision of moving the mouse around with a long stick
random spazzing mousepointers are not really entertaining when you try to do stuff 09:16
mathw definitely not
as I found out when I started my new job and they gave me a dodgy mouse which would occasionally send the pointer leaping around the screen at random
bonsaikitten mmh fun 09:17
mathw yup
fortunately my colleague saved me from yet another trip through the incredibly slow procurement process for a new mouse by revealing that he had several spare ones in his desk drawer in his desk in the office on another campus that we're not working in for this project...
also fortunately we go there occasionally for meetings so picked one up then 09:18
hurrah for mouse pointer control
tadzik mathw: ooc, why not t5xx?
timotimo :D 09:19
tadzik and please don't say "because keyboard" :) 09:20
09:20 cognominal joined
mathw too big 09:21
basically
dalek : 09e6da4 | (Tobias Leich)++ | lib/Perl6/P5 (2 files):
support undef
: 999a852 | (Tobias Leich)++ | STATUS.md:
smoked
tadzik hm 09:22
oh, it's bigger indeed 09:23
timotimo i've got an x200s, but i think the next thinkpad i'll buy will be a bit bigger 09:24
tadzik I now have 15.4", and it's a bit clumsy when traveling
maybe because it also weights 4 kgs
timotimo 4kgs! wow.
tadzik yep 09:25
timotimo can't you build a big laptop that doesn't weigh 1/250th of a ton?
tadzik I disassembled it a couple of times and I still don't know why it's so heavy
09:25 sqirrel joined
tadzik t430 you say, hmm 09:25
mathw seemed right to me 09:26
I hope I don't change my mind when it arrives!
tadzik and it does have usb 3.0 09:27
well, count me in then
and this nice new keyboard from which you _can_ remove hair
timotimo i was initially sceptical of that keyboard, but then a friend let me type on it and it seemed all right 09:28
also ... yeah, the hair problem :|
mathw I have a very furry cat...
timotimo i have kind of furry arms :|
tadzik the old keyboard are all fun and games until hair and dirt gets inside 09:29
in the new ones you need to blow and the problem is gone
timotimo do you have a tip for cleaning the old type?
tadzik phen^W^W 09:30
yoleaux: "agrafka"?
09:30 lizmat left
tadzik dang 09:30
safety-pin it is
jnthn That's a cute word for safety pin :) 09:31
tadzik I just swipe it all along the gaps between the keys, and then "pick" it upwards on the edge of a keyboard
repeat until clean enough
safety pin or a random piece of wire that doesn't bend easily
tends to work ok with hair
timotimo hmm 09:32
mathw At one point I got so annoyed with mine I took it out of the laptop, took all the caps off and cleaned it that way
FROGGS a harder brush works well for laptop keys
mathw Got it very clean, but it was incredibly tedious
timotimo i have a problem with my caps
i lost the tab key cap and the H key keeps coming off when i use the trackpoint 09:33
FROGGS timotimo: new keyboard is about 30eur at ebay
timotimo oh? that's 50% of what i saw somewhere else
FROGGS your laptop model? 09:34
timotimo but i don't have an ebay account :|
x200s
mathw this is clearly the channel of good taste in laptops :)
tadzik mathw: which t430 model did you get? 09:35
FROGGS mathw: I've got a dell, and it is awesome :o)
timotimo: there is a used one for sale... I'll have a look at it 09:36
mathw tadzik: it's a custom-build T430 with dual core i7, fancier wireless and the 1600x900 screen
8GB of RAM (16GB was too expensive to build in, but I can upgrade later) and the basic hard drive because they charge far, far too much for SSDs and I'll upgrade that myself in a few months 09:37
timotimo i read somewhere that experts™ expert SSD prices to reach the level of HDD prices this year still 09:38
mathw they're getting pretty good
FROGGS timotimo: that's a bit of a hoax
tadzik I have my own ssd in the old laptop, I'd rather buy the new one without a disk at all if possible
mathw I got a 256GB one for my old laptop for a good price
unfortunately it won't fit in the new one :(
old laptop takes 9mm drives, new one takes 7.5
probably can't get away with sawing 2.5mm off the top...
FROGGS I expect that SSDs with size less than 384GB will be "as cheap as" normal HDDs of that size 09:39
mathw big ones will remain crazy expensive
FROGGS BUT: who buys a normal HDD with less then 384GB? and note, such an HDD is just a bit cheaper then a 1TB hdd
timotimo good point.
FROGGS so you cant really compare, unless they sell 1TB SSDs for a normal price 09:40
mathw I was quite struck by the lowest HDD I could get for my new laptop being 320GB
My old laptop came with a 160GB and that was not the base spec
which I then upgraded to a 256GB SSD last year
FROGGS it is still 60cent/MB for SSDs, and about 4 cent/MB for HDDs
mathw sooooo much space
FROGGS hmmm, my 256GB SSD already was full :/ 09:41
tadzik who needs a big hdd in a laptop anyway :)
FROGGS <----
several VMs need its space
tadzik I moved my music and pictures to NFS at home recently, suddenly I need 20G on my disk
well, VMs, yes 09:42
FROGGS have almost no music/videos on it
cognominal With my macbook air, I am constrained by the size of the SSD (129Mo) but I don't care much about wasting VM anymore. With a HDD, the swapping gets terrible. 09:43
tadzik swapping is terrible in general, imho :)
I prefer kernel to just kill the processes
cognominal I put videos on an USB key, they are getting big, fast and cheap. 09:44
I mean an USB 3 key.
09:44 daxim joined
mathw That's going to be a good option for me now I'll have USB 3 port :) 09:45
I get away with it because the really space-chewing stuff I do goes on my desktop which has a couple of 1TB drives in it
09:46 domidumont left, berekuk left
cognominal also with an SSD, running an app like grand perspective to see what eats my disk is getting very fast. 09:47
09:49 brrt joined 09:50 lizmat joined
tadzik mathw: t430 has 7.5mm disk case? 09:51
mathw so I understand
tadzik dang
mathw yes that's what I thought
09:53 woolfy joined 10:06 domidumont joined 10:12 anuby_ left 10:20 brrt left 10:23 lizmat left 10:28 jerome left 10:30 labster left 10:41 jerome_ joined
cognominal how do I create a link or symlink in rakudo short of running the command? 10:49
FROGGS cognominal: I dont understand, you want to create a symlink via a shell command from within perl6? 10:50
jnthn I think the question is more "does Perl 6 have a built-in function/method for creating a symlink" 10:52
cognominal yup 10:53
timotimo wow. on april 1st there was a 12 hour livestream of a "best video no youtube" nominee announcement ceremony
they had 10 stacks of cards and read titles and descriptions of videos for almost the whole time
that's commitment. 10:54
FROGGS cognominal: if there were one it would be here: github.com/tadzik/perl6-File-Tools...Command.pm
cognominal I meant I did not find a link or symlink sub in rakudo/src/core/IO.pm 10:56
FROGGS cognominal: and it is missing here too: nqp/src/QAST/Operations.nqp:1642 10:57
hmmm, but it looks like parrots supports link and symlink... 10:58
jnthn I guess we could provide them, with the proviso that they ain't portable. 10:59
cognominal is that Posix?
jnthn But then, we offer .is_link already, which also isn't.
FROGGS rebuilds nqp to see if that works... 11:00
cognominal en.wikipedia.org/wiki/Symbolic_link # apparently it is
same for a hard link 11:01
11:03 fhelmberger left
mathw Doesn't NTFS have symlinks these days? 11:04
timotimo i believe so
hm, or was that hard links?
mathw nope, symlinks 11:05
so says that wikipedia page
FROGGS recompiles rakudo and creates a symlink 11:06
11:18 lizmat joined
FROGGS cognominal: you can try: gist.github.com/FROGGS/538aa9cd185df5215372 11:22
cognominal: I'm not sure though if I swapped target and source or not...
would be cool if you check that and apply the patch or so 11:23
I need to &lunch
bbiab
11:29 rvchangue left 11:32 shinobicl joined 11:35 shinobicl_ joined 11:38 shinobicl left 11:50 lizmat left 11:52 huf__ joined 11:53 huf__ is now known as huf 11:54 bloonix joined, lizmat joined, Manoj_ joined 11:55 Manoj_ left 12:08 domidumont left, domidumont joined
cognominal FROGGS, I got No registered operation handler for 'symlink'. Thx, in the meantime, I will use &run 12:19
FROGGS cognominal: it does work for me... I'll commit in a few minutes 12:20
cognominal thx
12:21 fgomez left
jnthn Remember to bump NQP_REVISION. 12:23
(which is probably why the no registered operation hadnler error)
FROGGS yes, will do :o) 12:25
cognominal You rock
FROGGS \m/ 12:26
jnthn: there is no $*WEAREONPOSIX switch, no? 12:27
jnthn Don't believe so
12:27 lizmat left
FROGGS k, so no tests for now 12:27
jnthn Well, we know it's Windows that is the one that will blow up out of all the platforms we're aware that we run on? 12:28
So checking we're not on Windows is probably sufficient. We can ammend things if we learn better. 12:29
FROGGS what if someone runs the tests on a fat32 filesystem using a unix box?
jnthn Would rather have that imperfection than no tests. No tests for copy gave us the panda breakage...
FROGGS: Then a $*WEAREONPOSIX would not have helped :P
FROGGS well, we need a bunch of others of course :P
jnthn That does seem relatively unlikely. 12:30
FROGGS k, will add tests
jnthn FROGGS++
If while you're in there, and if you have time, you could add a test for copy, that would also be great.
FROGGS takes the karma he already got and runs...
will do 12:31
12:31 skids left
jnthn It's preferable that we catch such things in spectest than by applications finding 'em. 12:31
dalek p: 5104c2e | (Tobias Leich)++ | src/QAST/Operations.nqp:
add nqp::symlink and nqp::link
FROGGS right 12:32
12:34 zs1i-2 joined 12:35 zs1i-2 left
dalek kudo/nom: 4e37f55 | (Tobias Leich)++ | / (3 files):
add symlink and link
12:35
timotimo neat 12:36
12:37 kaleem left
FROGGS jnthn: there are tests for open... at least indirect tests which use open to create files... 12:38
colomon starlogs.net/#perl6/roast
FROGGS lol
jnthn FROGGS: open?
FROGGS: It was copy I suggested tests for ;) 12:39
FROGGS ahh
hehe
r: my $copy; $open = 42
p6eval rakudo 3e1b44: OUTPUT«===SORRY!===␤Variable '$open' is not declared␤at /tmp/cqqJY8b78b:1␤------> my $copy; $open⏏ = 42␤ expecting any of:␤ postfix␤»
FROGGS meh... was expecting it so say there is $copy... 12:40
k, copy then
jnthn Well, it wont' confuse variables and fucntons
r: cpy('foo', 'bar')
p6eval rakudo 3e1b44: OUTPUT«===SORRY!===␤Undeclared routine:␤ cpy used at line 1. Did you mean '&copy'?␤␤»
FROGGS but I thought it tells me about typos in varnames
12:41 mtk left
FROGGS there is code for suggestions in check_variable() in the grammar... 12:41
jnthn yeah but they have to be close :)
FROGGS well, copy and open are something close... 12:42
jnthn r: my $laughter; say $slaughter
p6eval rakudo 3e1b44: OUTPUT«===SORRY!===␤Variable '$slaughter' is not declared. Did you mean '$laughter'?␤at /tmp/iiF9dVWZYV:1␤------> my $laughter; say $slaughter⏏<EOL>␤ expecting any of:␤ postfix␤»
12:42 mtk joined, frdmn left
FROGGS r: class Copy{ }; Open.new 12:43
p6eval rakudo 3e1b44: OUTPUT«===SORRY!===␤Undeclared name:␤ Open used at line 1␤␤»
FROGGS meh
jnthn Not levenstein enough :)
FROGGS ya, looks like
it is more like Levenfelsen then 12:44
12:44 mtk left
jnthn
.oO( unlevensteined braed )
12:45
12:46 anant joined
FROGGS ? 12:46
dont get it
12:47 mtk joined
jnthn Don't worry, it wasn't that funny :) 12:47
Just my brane making weird associations.
FROGGS k :o) 12:48
most things are funnier in my head too then here in irc
anant I think the correct definition of a Parcel should be "Two or more ..." instead of "One or more ..." (S02:2125) 12:50
say (1).WHAT, (1, 2).WHAT
r: say (1).WHAT, (1, 2).WHAT
p6eval rakudo 3e1b44: OUTPUT«(Int)(Parcel)␤»
tadzik r: say(1,).WHAT 12:51
p6eval rakudo 3e1b44: OUTPUT«1␤»
tadzik erm
r: say (1,).WHAT
p6eval rakudo 3e1b44: OUTPUT«(Parcel)␤»
jnthn It's , that makes a parcel, even if the name suggests otherwise. 12:52
anant ah, so the comma operator is a must
FROGGS r: say (1,).count
p6eval rakudo 3e1b44: OUTPUT«No such method 'count' for invocant of type 'Parcel'␤ in block at /tmp/tTgXCP0duM:1␤␤»
jnthn elems
FROGGS ohh, okay
r: say (1,).elems 12:53
p6eval rakudo 3e1b44: OUTPUT«1␤»
12:56 bluescreen10 joined, eternaleye left 12:57 eternaleye joined
anant I could not understand this line: github.com/perl6/specs/blob/master....pod#L2187 12:59
13:00 kaleem joined 13:04 shinobicl_ is now known as shinobicl 13:09 mtk left 13:13 mtk joined
Juerd anant: Neither do I... :) 13:18
dalek ast: 112afe3 | (Tobias Leich)++ | S32-io/copy.t:
added tests for Str.IO.copy and copy()
13:20
kudo/nom: ffc17d3 | (Tobias Leich)++ | t/spectest.data:
run new test file copy.t
13:21
13:22 kaare_ joined
anant Juerd: We need to be enlightened :) 13:23
timotimo good work, froggs!
13:24 mtk left 13:25 domidumont left, domidumont joined 13:26 PacoAir joined
anant Do the synopses consistently use the terms "parameter" and "argument" for "formal parameter" and "actual parameter" respectively? 13:27
13:27 daxim left, daxim joined
FROGGS timotimo: I believe one could write a bunch more sane tests for copy() though 13:28
like trying to copy a directory/symlink/whatever 13:29
or copying to an existing file...
that's not covered yet
cognominal anant: yes 13:30
jnthn anant: We try to consistently use "parameter" for the callee side thing and "argument" for the caller side thing everywhere in Perl 6, yes.
cognominal an argument is what is bound to a parameter
anant cognominal: because in S08, it's kind of used inter-changeably : perlcabal.org/syn/S08.html 13:31
jnthn I'd treat S08 with some suspicion, fwiw. It's one of the ones marked [DRAFT]. 13:32
cognominal anant: indeed, that's wrong 13:33
13:33 tgt joined
anant ah .. should I be ignoring S08? (I was trying to get more details on Parcel/Capture) 13:34
cognominal anant, I think they are pretty well covered in S02 13:36
r: (1,) ~~ :($a) 13:38
p6eval rakudo 4e37f5: ( no output )
cognominal r: say (1,) ~~ :($a)
p6eval rakudo 4e37f5: OUTPUT«True␤»
cognominal anant, you also have the Signature object 13:39
PerlJam anant: or you could patch S08 to use the terminology consistently :)
cognominal r: say \(1) ~~ :($a)
p6eval rakudo 4e37f5: OUTPUT«True␤»
cognominal r: say :($a).WHAT 13:40
p6eval rakudo 4e37f5: OUTPUT«(Signature)␤»
13:41 kbenson joined 13:44 isBEKaml joined
anant cognominal: They are in S02, but unfortunately, I couldn't understand that section properly .. like why do we need both a Parcel and a Capture object type? 13:46
cognominal anent For example with named arguments 13:47
oops
jnthn Parcels have only a positional nature.
Captures have positional and named.
anant PerlJam: can I? I would be happy to do my first commit :)
cognominal anant: For example with named arguments, you can pass many of the same name and I think this is the last that taker over
anant: you can see a Capture as a normalised Parcel 13:48
r: my %some-default = :foo<bar>, :karma<gnole>; sub fun( *%named) { .say for %named }; fun |%some-default, :foo<baz> 13:52
p6eval rakudo 4e37f5: OUTPUT«duplicate named argument in call␤ in block at /tmp/wbqAVr9Hpp:1␤␤»
cognominal I thought duplicate named arguments were a feature 13:53
13:54 lizmat joined
anant jnthn: Do Parcels and Captures fill different use cases? Capture: To bind a group of argument objects to a subroutine's parameters (that would explain the positional _and_ named nature). Parcel: To simply group objects. 13:56
14:02 frdmn joined 14:03 shinobicl left
cognominal :r sub fun (Int :@x) { ... } ; fun( x => 1, x => 2 ); # @x := (1, 2) 14:03
r: sub fun (Int :@x) { ... } ; fun( x => 1, x => 2 ); # @x := (1, 2)
p6eval rakudo 4e37f5: OUTPUT«Nominal type check failed for parameter '@x'; expected Positional but got Int instead␤ in sub fun at /tmp/8CEdGf5yQg:1␤ in block at /tmp/8CEdGf5yQg:1␤␤»
jnthn anant: Those are certainly the typical use cases, yes. 14:04
cognominal contrary to : github.com/perl6/specs/blob/master...s.pod#L874
14:04 skids joined, kaleem left
jnthn cognominal: yeah...I tend to view that part of the spec as somewhere between "too cute by half" and "utterly insane". 14:06
It means that the callee choosing to change a sigil can change the semantics of a call.
Even if they otherwise carefully preserve type constraints. Or perhaps if they intended to deliberately widen the types taken as part of a refactor. 14:07
cognominal Ho, my example was indeed drawn from S06:888 14:08
14:09 spider-mario joined 14:10 mtk joined
cognominal say ( :foo<bar>, :foo<baz> ).Capture.perl 14:11
r: say ( :foo<bar>, :foo<baz> ).Capture.perl 14:12
p6eval rakudo ffc17d: OUTPUT«Capture.new( list => ().list, hash => EnumMap.new("foo", "baz", ))␤»
14:12 tgt left, xilo left
cognominal jnthn: I thought that a call was getting its argument as a Parcel that was conceptually cast to a Capture and that bought us the two last exampble for free 14:14
my remark is a follow up to anant question, btw.
* arguments
14:17 lizmat_ joined 14:18 isBEKaml left, tgt joined, lizmat left, lizmat_ is now known as lizmat, gdey left 14:22 shinobicl joined
jnthn cognominal: Well, the Parcel => Capture transofrmation presently happens at compile time, and the capture is typically not really constructed, for performance reasons. 14:29
Otherwise we're forced to an object allocation just to pass arguments.
cognominal that would cost, indeed 14:30
timotimo rakudo is already slow enough as is :P 14:31
jnthn Right. :P
FROGGS timotimo: but not for much longer :o) 14:32
14:35 PacoAir left
cognominal Well if the user wants that behavior (the last argument with a given name take over) he could explicitly convert the parcel to a capture 14:35
14:37 SamuraiJack left 14:39 shinobicl left, shinobicl joined
pmichaud good morning, #perl6 14:44
jnthn hi, pmichaud 14:46
FROGGS hi pmichaud 14:47
14:51 gdey joined 14:55 domidumont left 14:56 frdmn left
lizmat hi pmichaud! 14:56
yoleaux 11 Apr 2013 07:57Z <FROGGS> lizmat: that v5's spectest fudging works now, FROGGS the prat had local changes to the fudge script and hasn't seen it because of about hundred changed testfiles -.-
11 Apr 2013 08:01Z <FROGGS> lizmat: you need to update nqp/rakudo to make it work though (jnthn is refactoring stuff, and I needed to pull in his changes)
14:56 frdmn joined
lizmat .thank you 14:56
FROGGS: at the QA Hackathon now, will try again after the weekend 14:57
FROGGS lizmat: btw, after recompiling rakudo you have to reapply my patch... I hope to get the okay to commit this patch these days... (but I need TimToady++ for that)
k
have fun
15:07 daxim left 15:10 PacoLinux joined, gdey_ joined 15:13 gdey left 15:14 GlitchMr left, GlitchMr joined, rindolf left 15:16 gdey_ left, gdey joined 15:17 dmol1 joined
kresike bye folks 15:17
15:17 kresike left 15:19 rindolf joined, tgt left
lizmat rn: use Perl:auth(Any):ver(v6..*) 15:21
p6eval niecza v24-37-gf9c8fc2: OUTPUT«===SORRY!===␤␤Action method value:version not yet implemented at /tmp/dfVOKNuJ0U line 1:␤------> use Perl:auth(Any):ver(v6⏏..*)␤␤NYI at /tmp/dfVOKNuJ0U line 1 (EOF):␤------> use Perl:auth(Any):ver(v6..*)⏏…
..rakudo ffc17d: OUTPUT«===SORRY!===␤Could not find Perl:auth(Any):ver(v6..*) in any of: /home/p6eval/nom-inst/lib/parrot/5.2.0-devel/languages/perl6/site/lib, /home/p6eval/nom-inst/lib/parrot/5.2.0-devel/languages/perl6/vendor/lib, /home/p6eval/nom-inst/lib/parrot/5.2.0-devel/languages/p…
lizmat I guess Rakudo is still very naive about "use"
FROGGS you are correct 15:22
lizmat std: use Perl:auth(Any):ver(v6..*)
p6eval std 86b102f: OUTPUT«===SORRY!===␤Cannot locate module Perl at /tmp/tHy3aq8kD5 line 1 (EOF):␤------> use Perl:auth(Any):ver(v6..*)⏏<EOL>␤Check failed␤FAILED 00:00 43m␤»
lizmat std even fails ?
FROGGS std: use STD:auth(Any):ver(v6..*)
p6eval std 86b102f: OUTPUT«ok 00:01 58m␤»
lizmat S11:619 states that Perl should be allowed there 15:23
FROGGS it should special-case the Perl namespace...
lizmat I assume all of this is actually implemented in Perl 6 or nqp ? 15:24
FROGGS in rakudo, yes
lizmat adds something on her list of possible things to do
15:33 BigBear left 15:38 anant left, FROGGS left 15:40 shinobicl left 15:41 isBEKaml joined
lizmat std: 6; $a="foo" 15:43
p6eval std 86b102f: OUTPUT«===SORRY!===␤Variable $a is not predeclared at /tmp/OlFHkgjCHc line 1:␤------> 6; ⏏$a="foo"␤Check failed␤FAILED 00:00 43m␤»
lizmat I guess lax mode is NYI as well, eh? 15:44
timotimo i think so, yeah
i wonder how hard that is to make, though
is lax mode per file? 15:45
lizmat I would think it to be lexical 15:47
timotimo what are the rules for what the scope of a laxily declared variable will be?
as in: { { $a = 5; } say $a }; will this give me two different $a? 15:48
lizmat not sure, I can't find much about lax mode in the specs
timotimo ah, so it's not only NYI, but also at least partially unspecced 15:50
i think the least surprising way would be to go up to the innermost Routine. thoughts? 15:51
15:51 anant joined
timotimo hm, does the block of an if statement or for loop count as a Routine? i think it's a Block, which is not a Routine 15:52
lizmat if we would take Perl 5 as an example, an undeclared $foo would be a ${__PACKAGE__}::foo global
timotimo mhm
15:54 crab2313 joined 15:55 spider-mario left
lizmat but any lexically scoped variable would mask the global in its scope 15:55
perl5: $a="foo"; say $a; my $a="bar"; say $a
foo bar 15:56
timotimo that would at least make things easy
declarations of PACKAGE::foo will still require a predeclaration to be emitted in the AST? 15:57
anant jnthn: Just found that () is also a Parcel. Shouldn't the definition then be "a list of _zero_ or more comma-separated objects ..." 16:02
r: say ().WHAT
p6eval rakudo ffc17d: OUTPUT«(Parcel)␤»
jnthn anant: I guess a zero-item Parcel can exist, yes :) 16:03
anant: So probably is a bit more accurate to say that. 16:04
anant jnthn: Should I change "one" to "zero" then? 16:05
16:05 kaleem joined
lizmat isn't it possible to add items to an existing Parcel later ? 16:05
jnthn anant: Works for me
lizmat: No, a Parcel is immutable (though the things inside it may not be) 16:06
lizmat: A List or Array can have things added.
lizmat but in the case of 0 items, the parens are important, no?
jnthn lizmat: () creates a Parcel, for sure. It just always will be a zero-element Parcel. 16:07
What happens to it in the future depends on context.
lizmat but is there a way to create a parcel without parens
16:08 shinobicl joined
jnthn Well, there's ways... :) 16:08
infix:<,>()
uh, but I guess I used parens there :P
r: say Parcel.new
p6eval rakudo ffc17d: OUTPUT«get_iter() not implemented in class 'Mu'␤ in method gist at src/gen/CORE.setting:5259␤ in method gist at src/gen/CORE.setting:902␤ in sub say at src/gen/CORE.setting:7788␤ in block at /tmp/aH3Imp337t:1␤␤»
jnthn Um. :)
We should mebbe fix that one... :)
lizmat S02:2125 16:09
anant I would say something called "Parenthesized Cells" better have parens :)
lizmat indeed, stupid me... 16:10
16:10 crab2313 left
lizmat so: s/one/zero in S02:2125 ? "A list of one or more comma-separated objects may be grouped together by parentheses into a "parenthesis cell", or C<Parcel>." 16:11
jnthn Oh, and a paragraph or so below that it says the Parcel => Capture thing is a compile time transformation. :)
anant jnthn: yes, so rakudo is following the spec :)
jnthn lizmat: () does indeed create a Parcel
anant: That does sometimes happen ;)
anant lizmat: yes
jnthn: BTW, I didn't see S02 mention a Parcel being immutable. 16:13
dalek ecs: 383cae6 | (Elizabeth Mattijsen)++ | S02-bits.pod:
A parcel can consist of 0 items, as discussed on #perl6 12Apr2013 at 16:10UTC
16:14 kaleem left, fgomez joined, BigBear joined
anant jnthn: Though I see this: "Capture objects are immutable in the abstract ..." 16:15
jnthn anant: Hm, I don't either.
lizmat maybe the ephemeral is a hint of its constness? (albeit for a very short time ? 16:16
jnthn or the "syntactic" 16:17
16:18 FROGGS joined
lizmat Perl 5 programmers are used to doing something like: 16:22
rn: my@a=(); @a.push("bar"); say @a
p6eval rakudo ffc17d, niecza v24-37-gf9c8fc2: OUTPUT«bar␤»
lizmat and might be tempted to right something like:
rn: my$a=(); $a.push("bar"); say $a 16:23
p6eval niecza v24-37-gf9c8fc2: OUTPUT«Unhandled exception: Unable to resolve method push in type Parcel␤ at /tmp/3ANkyVMb5F line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4299 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4300 (module-CORE @ 583) ␤ at /hom…
..rakudo ffc17d: OUTPUT«Cannot call 'push'; none of these signatures match:␤:(Any:U \SELF: *@values, Mu *%_)␤ in method push at src/gen/CORE.setting:1450␤ in block at /tmp/oBM0W1BAcR:1␤␤»
moritz back(ish)
lizmat so I wonder whether the error should be more specific than "push not found"
timotimo give Parcel.HOW a special case to find_method to warn about methods of List that Parcel doesn't have? 16:24
16:24 PacoLinux left
jnthn wbish, moritz 16:24
lizmat something like that, yes… wouldn't that make sense
timotimo is it a good idea to give Parcel a special HEW? 16:25
HOW even
jnthn No, not really.
If you're going to try and give hints, then consider doing it as part of the rendering of the typed exception.
timotimo oh, that makes 100x more sense 16:26
i keep forgetting how cool rakudo is on the inside
jnthn But I'm not (yet) convinced it's valuable here, fwiw.
I'm not sure it'll be *that* tempting to do my $a = (); since iirc that doesn't actually make sense in Perl 5?
timotimo mhh 16:27
huf it sooortof does
just not very useful
jnthn Can you push to it?
huf it's the same thing as undef
in scalar context
jnthn ah.
huf () comes up every now and then as a purely syntactical thing 16:29
when you absolutely need an expression :)
lizmat at some point it was such a meme, that rgs actually wrote an optimization that would turn "my @a=()" to "my @a" 16:30
timotimo m) 16:32
huf _that_ is far more common 16:35
but so is my @a = ''; and various other weird stuff 16:36
16:36 tgt joined
anant lizmat: www.youtube.com/watch?v=mrfK1dtyD14&t=45m30s 16:36
lizmat: pmichaud++ says comma creates Parcel and not parens :) 16:37
timotimo indeed
lizmat so the spec is now correct :-)
and I should have remembered, because I saw that talk IRT 16:38
[Coke] anant++
anant lizmat: you meant "not" correct, right? 16:40
lizmat I updated it just now
s/one/zero
gtodd there's more than one way to be correct
jnthn gtodd: no, there's more than *zero* ways... 16:41
:P
gtodd :-D
is there more than one way to customize the REPL ? (colours prompt etc)
lizmat so maybe it should be rewritten to s/zero/one again, and add () as a special case in the spec ?
jnthn gtodd: Not at the moment, I don't think. 16:42
gtodd besides digging deep somewhere? (line numbers)
[Coke] wonders if we should link the synopses to those talk slides as the closest thing to canon we have atm.
gtodd ok
[Coke] lizmat: that seems reasonable to me.
jnthn gtodd: Is there anything you'd particularly like to see in that regard?
gtodd strangely I'm missiing perl -de1
[Coke] gtodd: just say "perl6"
lizmat [Coke]: not sure whether the Synopses would be the best place for linking to YouTube 16:44
on the other hand, I wouldn't know a better place for it either :-(
anant lizmat: I still think parens create the Parcel. How do I get a Parcel object just through comma's? 16:45
gtodd jnthn: well probably colours, line numbers, predefining some functions that's I'd use all the time (which would be more like shortcuts printing dumping) ... various things that might make it work better as a debugging window in vim emacs :-) can't think of them just now
jnthn gtodd: If it's debugging you want, there's always perl6-debug :) 16:46
anant gtodd: I would also like to see support for UP/DOWN arrow keys for previously typed lines :)
jnthn anant: You get that if libreadline is available when you build Parrot, fwiw. 16:47
gtodd jnthn: true ...
[Coke] lizmat: "[DRAFT] patches from <url> welcome!"
jnthn gtodd: perl6-debug has a REPL mode.
gtodd anant: please hack in linenoise support :-)
16:47 isBEKaml` joined
gtodd jnthn: ok great so I could customize that mabye ... will look at it more 16:48
16:48 isBEKaml left 16:49 isBEKaml` is now known as isBEKaml
[Coke] anant: disprove by example: construct a one element parcel with no commas. 16:49
16:49 isBEKaml left, isBEKaml joined
jnthn gtodd: Yeah, more configurability is certainly on the debugger todo list. 16:49
gtodd jnthn: there's another python console (there seem to be many) much slimmer than ipython that lets you run commands and then save them to a script
jnthn: I remember using it without being "in" vi or emacs and being sort of surprised 16:50
16:51 isBEKaml left, xilo joined
anant [Coke]: I thought the comma is for the list creation, and parens surrounding that make it a Parcel 16:51
lizmat rn: ma $a=1,2 16:52
p6eval niecza v24-37-gf9c8fc2: OUTPUT«===SORRY!===␤␤Variable $a is not predeclared at /tmp/pWoMdZNXcs line 1:␤------> ma ⏏$a=1,2␤␤Undeclared routine:␤ 'ma' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting lin…
..rakudo ffc17d: OUTPUT«===SORRY!===␤Variable '$a' is not declared␤at /tmp/BjIzvfDVpP:1␤------> ma $a⏏=1,2␤ expecting any of:␤ postfix␤»
lizmat rn: my $a=1,2 16:53
p6eval niecza v24-37-gf9c8fc2: OUTPUT«Potential difficulties:␤ $a is declared but not used at /tmp/efv7397Va3 line 1:␤------> my ⏏$a=1,2␤␤»
..rakudo ffc17d: ( no output )
lizmat rn: my $a=1,2; say $a
p6eval niecza v24-37-gf9c8fc2: OUTPUT«1␤»
..rakudo ffc17d: OUTPUT«WARNINGS:␤Useless use of "," in expression "my $a=1,2" in sink context (line 1)␤1␤»
anant r: my $a=1,2; say $a.WHAT
p6eval rakudo ffc17d: OUTPUT«WARNINGS:␤Useless use of "," in expression "my $a=1,2" in sink context (line 1)␤(Int)␤»
lizmat you need the ()
anant lizmat: yes, the point 16:54
16:54 PacoAir joined
felher Something about coding style. Any comments about: gist.github.com/felher/5373428 ? 17:04
17:04 xilo left 17:05 xilo joined
flussence felher: I've tried similar things before, and I usually give up when it gets to about that many lines :) 17:05
felher flussence: yeah. I'm exactly at this point :) 17:06
timotimo wow, that's whitespacey 17:07
17:07 woolfy left
lizmat dinner& 17:07
17:08 lizmat left
timotimo it amuses me how it looks like a tree, but it's super wide as a consequence :| 17:10
felher timotimo: indeed :)
gtodd jnthn: so many FAQs so little time :-) sorry 17:11
faqs.perl6.org/ needs love
timotimo anything special you had in mind? 17:13
flussence .u 1f4a1
yoleaux U+1F4A1 ELECTRIC LIGHT BULB [So] (💡)
flussence gist.github.com/flussence/5373569
timotimo oh, that's cute 17:15
17:15 BigBear left
felher flussence: I didn't know you can define your tokens inside other tokens this way and still use a action-class with a 'word' method :) nice one :) 17:16
flussence I didn't either until I tried it :)
17:24 rindolf left 17:25 rindolf joined
pmichaud reads backscroll 17:28
diakopter O_O 17:32
pmichaud the comma creates a parcel. parens are simply for grouping.
the one exception is that empty parens create an empty parcel.
rakudo: say (3 and 4,5).WHAT # note no parens around the parcel 17:33
p6eval rakudo ffc17d: OUTPUT«(Parcel)␤»
FROGGS r: my $p =(,); say $p.WHAT; say $p.elems
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Preceding context expects a term, but found infix , instead␤at /tmp/Bd2q0BQSS8:1␤------> my $p =(,⏏); say $p.WHAT; say $p.elems␤»
diakopter r: say (;).WHAT 17:34
p6eval rakudo ffc17d: OUTPUT«(Parcel)␤»
FROGGS ohh
diakopter r: say (;;).WHAT
p6eval rakudo ffc17d: OUTPUT«(Parcel)␤»
FROGGS r: my $p =(;); say $p.WHAT; say $p.elems
p6eval rakudo ffc17d: OUTPUT«(Parcel)␤0␤»
FROGGS then this sentence about one or more elements is wrong too
diakopter r: say (;;;[]).elems
p6eval rakudo ffc17d: OUTPUT«0␤»
moritz wtf. 17:35
pmichaud rakudo: say (4,5,6 if True).WHAT
p6eval rakudo ffc17d: OUTPUT«(Parcel)␤»
anant FROGGS: lizmat++ corrected it to "zero or more ..."
FROGGS ahh, cool
lizmat++ 17:36
thanks anant
17:36 PacoAir left
pmichaud I think "zero or more" isn't exactly right either. 17:36
FROGGS hmmm, but zero or more is a bit weird, because it cant be less then zero
pmichaud Because (1) Isn't a parcel.
17:37 PacoAir joined
pmichaud but I was expecting to fix that as part of the S07 clarifications. 17:37
Because S06 also says that Parcels are ephemeral, but that's no longer true either. 17:38
17:38 supernovus joined, rindolf left 17:39 rindolf joined
anant pmichaud: Even S02 says "Parcel objects are ephemeral, insofar as the user almost never sees one as a real standalone object, since binding or assignment always turns a parcel into something else" 17:39
pmichaud right. but that's before Parcels became more evident. 17:40
that part of S02 was written before we understood how Lists would work.
nowadays it's easy to find a Parcel as a standalone object.
r: my $a = (1,2,3); say $a.WHAT
p6eval rakudo ffc17d: OUTPUT«(Parcel)␤»
moritz (iirc) the theory was that a Seq is a user-facing parcel
pmichaud I don't think Seq was that... because Seqs were lazy 17:41
and flat
moritz but in the end there's not much point in hiding parcels and exposing seqs instead
pmichaud parcels are the things that exist before flattening is determined
supernovus New feature for Web::App::Ballet, it now supports placeholder path variables, so: get '/users/:name/jobs/:jobid/' would add :name and :jobid parameters to the request object with the appropriate values from the path. 17:42
pmichaud time for lunch here... bbl
anant FROGGS: But it can be zero :) 17:45
r: ().WHAT
p6eval rakudo ffc17d: ( no output )
anant r: say ().WHAT 17:46
p6eval rakudo ffc17d: OUTPUT«(Parcel)␤»
FROGGS anant: ya, but not less, so it for a thing that can hold an amount of other things, it makes not much sense to tell that there can be zero or more things in it 17:51
anant FROGGS: We were trying to account for the 0 elems case ... 17:52
FROGGS that is like telling that an array can hold zero or more elements
diakopter r: say (()).DUMP 17:53
p6eval rakudo ffc17d: OUTPUT«Parcel<1>(:$!storage(RPA<2>()))␤»
diakopter r: say ((),()).DUMP
p6eval rakudo ffc17d: OUTPUT«Parcel<1>(:$!storage(RPA<2>(␤ Parcel<3>(:$!storage(RPA<4>())),␤ Parcel<5>(:$!storage(RPA<6>()))␤)))␤»
17:55 rindolf left
[Coke] r: say "I'm the map!" for 1..5 17:55
p6eval rakudo ffc17d: OUTPUT«I'm the map!␤I'm the map!␤I'm the map!␤I'm the map!␤I'm the map!␤»
17:55 rindolf joined
[Coke] is sad that the video keeps going black on www.youtube.com/watch?v=rsccacoabaE 17:56
FROGGS perl6 -e 'my $f = "/home/froggs/dev/v5/t/test.pl"; say $f.IO.e; require $f' 18:04
True
Could not find /home/froggs/dev/v5/t/test.pl in any of: blib, /home/froggs/dev/nqp/install/lib/parrot/5.2.0-devel/langu...
^-------- does somebody understand that?
is require not supposed to work?
18:05 SamuraiJack joined 18:08 rindolf left, rindolf joined
geekosaur sounds like maybe it always does path search even with an absolute filename? 18:09
FROGGS geekosaur: reletive paths doesnt work too
PERL6LIB=. perl6 -e 'my $f = "t/test.pl"; say $f.IO.e; require $f' 18:10
True
Could not find t/test.pl in any of: ., /home/fro...
ahh, it only can handle module names 18:13
-.-
will read the spec next
18:17 erkan left 18:20 tangentstorm joined
[Coke] r: my $a = 1, 4, 8, ... * ; say $a.gimme(0); 18:21
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Comma found before apparent series operator; please remove comma (or put parens\n around the ... listop, or use 'fail' instead of ...)␤at /tmp/x2Gg9h6HE5:1␤------> my $a = 1, 4, 8,⏏ ... * ; say $a.gimme(0);␤»…
tangentstorm hello :)
[Coke] r: my $a = 1, 4, 8 ... * ; say $a.gimme(0);
p6eval rakudo ffc17d: OUTPUT«No such method 'gimme' for invocant of type 'Int'␤ in block at /tmp/cHSglQWt8s:1␤␤»
[Coke] r: my @a = 1, 4, 8 ... * ; say @a.gimme(0);
p6eval rakudo ffc17d: OUTPUT«0␤»
[Coke] tangentstorm: OHAI
anant r: my $a = 1, 4, 8 ... *; 18:24
p6eval rakudo ffc17d: ( no output )
tangentstorm why is the error message changing for the same input?
oh you dropped a comma
anant [Coke]: On my rakudo installation, this gave the error "Unable to deduce sequence" 18:25
tangentstorm can't deduce the sequence either.
timotimo the planeteria barfed RSS again it seems 18:27
18:27 SamuraiJack_ joined, SamuraiJack left
tangentstorm r: print "\x035,12hello world" 18:27
p6eval rakudo ffc17d: OUTPUT«5,12hello world»
[Coke] anant: what version are you running?
anant [Coke]: 2013-02 18:28
[Coke] r: my $a = 1, 4, 8 ... *; say $a; 18:29
p6eval rakudo ffc17d: OUTPUT«1␤»
[Coke] r: my $a = 1, 2, 4 ... *; say $a;
p6eval rakudo ffc17d: OUTPUT«1␤»
[Coke] r: my @a = 1, 2, 4 ... *; say @a; 18:30
p6eval rakudo ffc17d: OUTPUT«1 2 4 8 ...␤»
[Coke] r: my @a = 1, 2, 8 ... *; say @a;
p6eval rakudo ffc17d: OUTPUT«get_attr_str() not implemented in class 'Coroutine'␤current instr.: 'print_exception' pc 111608 (src/gen/CORE.setting.pir:50161) (src/gen/CORE.setting:9722)␤called from Sub 'throw' pc 357537 (src/gen/CORE.setting.pir:155985) (src/gen/CORE.setting:9536)␤called from …
[Coke] that's suboptimal.
so, 1, 2, 4... * is a valid sequence; 1, 2, 8 ... *
is not
and then there's the fact that $a vs @a treat those differently. 18:31
and then there's the fact that that last one should error trying to create the sequence, not trying to print it.
tangentstorm r: print "\x039hello world"
p6eval rakudo ffc17d: OUTPUT«9hello world»
flussence
.oO( there's room for a fuzzy sequence creation module in there somewhere... )
tangentstorm r: print "\C[ETX]9hello world" 18:34
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Unrecognized backslash sequence: '\C'␤at /tmp/lquPRa7QsM:1␤------> print "\⏏C[ETX]9hello world"␤ expecting any of:␤ argument list␤ prefix or term␤ prefix or meta-prefix␤ double quotes␤…
anant [Coke]: maybe the rakudo: used here is an older version?
[Coke] rakudo: say $*VERSION # have no idea what this variable is called. 18:36
p6eval rakudo ffc17d: OUTPUT«Dynamic variable $*VERSION not found␤ in method gist at src/gen/CORE.setting:10810␤ in method gist at src/gen/CORE.setting:902␤ in sub say at src/gen/CORE.setting:7788␤ in block at /tmp/CvdYfxxQre:1␤␤»
[Coke] but ffc17d is the last commit used.
flussence r: say $*PERL.perl
p6eval rakudo ffc17d: OUTPUT«{"name" => "rakudo", "compiler" => {"name" => "rakudo", "ver" => "2013.03-83-g4e37f55", "release-number" => "", "build-date" => "2013-04-12T13:14:57Z", "codename" => ""}}␤»
flussence ...something seems slightly off there.
[Coke] flussence: what? 18:37
flussence 4e37f55 18:38
[Coke] 83 commits since that commit.
(where that commit is the last tag tied to a commit in our history)
tangentstorm r: print "red hello" ~ s/red/\C[ETX]4/
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Unrecognized backslash sequence: '\C'␤at /tmp/qPLHf1ErH5:1␤------> print "red hello" ~ s/red/\⏏C[ETX]4/␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix␤ prefix or term␤…
tangentstorm r: print "red hello" ~ s/red/\x034/
p6eval rakudo ffc17d: OUTPUT«No such method 'subst' for invocant of type 'Any'␤ in block at /tmp/NSPeeNJOZp:1␤␤»
jnthn ~~, not ~ 18:39
tangentstorm r: print "red hello" ~~ s/red/\x034/
18:39 fgomez left
p6eval rakudo ffc17d: OUTPUT«Cannot modify an immutable value␤ in sub infix:<=> at src/gen/CORE.setting:12872␤ in block at /tmp/0oT8QHgf6e:1␤␤» 18:39
tangentstorm been too long since i used perl :)
jnthn And s/a/b/ expects to have a variable on the left :)
[Coke] ... that's an odd error message.
flussence my local copy has "ver" => "2013.03-77-g400fb2c", where 400f matches the state of the git clone.
[Coke] flussence: I may have misremembered how that works, apologies. 18:40
tangentstorm well in any case IRC clients don't use ANSI escape codes... They all just do what mirc does.
r: print "9hello world"
p6eval rakudo ffc17d: OUTPUT«9hello world»
tangentstorm hmm
[Coke] (is that the commit since, or the commit of) - the tag is there, obviously.
flussence it's 83 commits since the 2013-03 tag, the -g(.*) means where it currently is
jnthn r: say "red hello".subst(/red/, "\x34")
p6eval rakudo ffc17d: OUTPUT«4 hello␤»
[Coke] danke.
tangentstorm no it's ^C and then the number 3 18:41
\x03 3
flussence but where's it getting "ffc17d" from then?
tangentstorm 4 would be red
jnthn ah :)
18:42 tgt left
tangentstorm github.com/perl6/evalbot/blob/mast...er.pm#L105 18:42
^ it's translating the newlines to that ␤ character but it doesn't know what to do with the color code escapes that perl is producing. 18:43
18:44 tgt joined
tangentstorm r: print "\x03C4red?" 18:46
p6eval rakudo ffc17d: OUTPUT«τred?»
tangentstorm r: $C = "\x03" ; print "${C}C4red?"
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Variable '$C' is not declared␤at /tmp/aOt_NZ6XLf:1␤------> $C⏏ = "\x03" ; print "${C}C4red?"␤ expecting any of:␤ postfix␤»
tangentstorm r: my $C = "\x03" ; print "${C}C4red?"
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Unsupported use of ${C}; in Perl 6 please use {$C}␤at /tmp/yXADaJXzwW:1␤------> my $C = "\x03" ; print "${C}⏏C4red?"␤»
tangentstorm r: my $C = "\x03" ; print "{$C}C4red?" 18:47
p6eval rakudo ffc17d: OUTPUT«C4red?»
tangentstorm r: my $C = "\x03" ; print "{$C}4red?"
p6eval rakudo ffc17d: OUTPUT«4red?»
tangentstorm HA
jnthn star: use Term::ANSIColor; say colored "or this ;-)", "blue"; 18:48
p6eval star 2013.02: OUTPUT«or this ;-)␤»
tangentstorm it's not ansi
irc doesn't really support colors, but MiRC did 18:49
and it used this ^C convention.
(instead of ansi :/)
jnthn Ah. 18:50
tangentstorm when it says ?===?SORRY!?===? those ? should be ^[ (chr(27))
but that's for an ansi terminal
31m would make the foreground dark red 18:51
18:51 SamuraiJack__ joined
tangentstorm 0 resets it 18:52
so it should be 4===14SORRY!4===
i don't think mirc codes have a dark red, just light red 18:53
18:55 SamuraiJack_ left, SamuraiJack__ left 18:59 fgomez joined
anant [Coke]: Turns out that error message comes only in REPL mode. When run as perl6 -e ' ... ' it didn't come 19:03
ingy hola #perl6 19:05
ingy has a little present for you…
github.com/acmeism/RosettaCodeData...ang/Perl-6 19:06
timotimo oooooh
how cool is that!
ingy :) 19:07
timotimo now those could be automatically tested
as part of the smoke testing perhaps?
ingy working on it
19:07 supernovus left
timotimo wow, that's nice! 19:07
ingy well for all of RC
timotimo yeah 19:08
19:10 cognominal left 19:14 berekuk joined 19:16 xantamoc joined 19:23 FROGGS left
masak oh hai, #perl6! 19:28
19:29 shinobicl_ joined
ingy hi masak 19:29
masak greetings, human. 19:30
ingy masak: you coming to yapc::na?
masak ingy: apparently! :D
ingy \o/
masak \o/
19:31 FROGGS joined
ingy I have acmeist codes that need a porting to p6 19:31
timotimo "acmeist codes"?
19:31 shinobicl left
ingy timotimo: oui! 19:32
masak timotimo: prepare to be memetically infected :P
timotimo acmeism.org/projects/ - these?
masak .oO( you can take the acmeist out of the acmeist, but you can't take the acmeist out of the acmeist )
masak .oO( some day acmeism is going to graduate into a full-fledged science... memistry ) 19:33
ingy timotimo: I'm like to get testml-pm6 done asap 19:35
it is finished (fully in sync) in p5 and ruby
timotimo neato
ingy as is pegex
timotimo oh, neat. how close is pegex to perl6 rules/regex syntax? 19:36
19:37 edgeuplink joined
FROGGS std: class My/Class { } 19:37
ingy similar. pegex is intended as p6rules::lite for all
p6eval std 86b102f: OUTPUT«===SORRY!===␤Unable to parse class definition at /tmp/_DQwxsVkzl line 1:␤------> class My⏏/Class { }␤ expecting any of:␤ name␤ trait␤Parse failed␤FAILED 00:00 40m␤»
timotimo but the regexes are "pcre compatible"?
that's a darn shame 19:38
i think p6re is the best thing to happen to regex programming in a long time
ingy timotimo: github.com/ingydotnet/pegex-pgx/bl.../pegex.pgx is just syntax that compiles to github.com/ingydotnet/pegex-pgx/bl...x.pgx.yaml 19:39
the ironic thing is that p6 is the hardest lang to port pegex to!
timotimo hahaha 19:40
if it were 1:1 compatible, that wouldn't be a problem ;)
ingy unless it supports p5re
I _might_ be able to compile pgx to p6
but it would take a YAPC influenced effort 19:41
timotimo today i was idly wondering how hard it would be to implement p6 compatible grammars to python (as that's my other main language)
ingy I'm currently porting pegex to python
timotimo how did you attack this? do you translate pegex to a combination of pure python objects and regular python regexes? 19:42
also, does pgx have something like perl6's longest token matching semantics?
ingy timotimo: all the acmeist code will eventually be written in a coffeescript like language called C'Dent/UniScript that will compile to all the backend modules 19:43
timotimo oh, c'dent, i heard of that before
ingy c'dent is a language with no syntax
uniscript is one syntax for cdent 19:44
timotimo oh?
19:44 edgeuplink left
ingy here's my basic plan… 19:44
I ported pegex and testml to 4 langs: p5 py rb js(coffee) 19:45
timotimo so c'dent is more like an intermediate thing with defined semantics?
ingy pegex is tested testml…
github.com/ingydotnet/pegex-tml
is the pegex test suite
testml-tml is the testml test suite in testml 19:46
timotimo mhm
ingy then I will port pegex and testml to yaml files that contain all the info to generate the 4 frameworks 19:47
19:47 anant left
ingy that will be cdent 19:47
timotimo huh. how does yaml translate to code semantics?
would you write it like an AST?
ingy yes, right
I just meant I write ASTs for all the code 19:48
YAML is an easy input for that
I'll probably write the AST to real code framework (cdent) in ruby
since that is my new favorite of the bunch 19:49
but that is not essential
I could write it in p6 :P
except p6 doesn't have the required yaml support
:)
masak pity :)
ingy then I make a uniscript that can encode the ASTs 19:50
done. QED
19:50 fgomez left
ingy then I write the new YAML module in UniScript with testml tests 19:51
and upload everywhere
same code, same test, same api, same bugs
welcome to acmeism
FROGGS same bugs \o/
timotimo hehe 19:52
ingy anyone with interest can /join #testml #pegex #cdent #acmeism on freenode
I'd like to get stuff working with p6 before oscon 19:53
and maybe before yapc
BigBear pointed out that a couple p6 modules are failing because of testml failure 19:54
I've removed the pegex dependency from testml, so getting it running in p6 should be no problem 19:55
maybe I'll work on that instead of python for a while
python is my least favorite of the bunch
it gets one big thing right, and 100 things wrong (in terms of usability) 19:56
it does have 100x better docs than ruby though 19:57
xilo what version of python 20:05
20:10 snearch joined 20:23 shinobicl_ left
[Coke] ingy: ah, thank you. 20:27
20:28 xantamoc left, xantamoc joined
[Coke] ingy: see also: 20:28
github.com/perl6/roast/tree/master/rosettacode 20:29
timotimo so, one thing i still can't quite figure out is this:
[Coke] (which I started and then didn't get anywhere with.)
timotimo: JUST ONE THING?!?
timotimo i didn't say it's the only thing mind you 20:30
r: my @map; @map[5][5] = "X"; @map.perl.say; @map = Any, map( { when List { (Any, $_) }; default { Any } }, @map); @map.perl.say 20:31
p6eval rakudo ffc17d: OUTPUT«Array.new(Any, Any, Any, Any, Any, [Any, Any, Any, Any, Any, "X"])␤Array.new(Any, Any, Any, Any, Any, Any, Any, [Any, Any, Any, Any, Any, "X"])␤»
timotimo ... what i can't figure out is: why does this work now and didn't work yesterday? :o
oh, there's one Any too much there
tangentstorm is $_ gone completely now?
timotimo the Any i wanted to have in the inner list ended up in the outer list instead, okay 20:32
FROGGS tangentstorm: no
timotimo r: my @map; @map[5][5] = "X"; @map.perl.say; @map = Any, map( { when List { unshift Any, $_ }; default { Any } }, @map); @map.perl.say
p6eval rakudo ffc17d: OUTPUT«Array.new(Any, Any, Any, Any, Any, [Any, Any, Any, Any, Any, "X"])␤Cannot modify an immutable value␤ in sub infix:<=> at src/gen/CORE.setting:12872␤ in method unshift at src/gen/CORE.setting:1472␤ in method unshift at src/gen/CORE.setting:1470␤ in sub unshift a…
timotimo whoops
r: my @map; @map[5][5] = "X"; @map.perl.say; @map = Any, map( { when List { [Any, @($_)] }; default { Any } }, @map); @map.perl.say
p6eval rakudo ffc17d: OUTPUT«Array.new(Any, Any, Any, Any, Any, [Any, Any, Any, Any, Any, "X"])␤Array.new(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, "X")␤»
20:32 cognominal joined
FROGGS r: for 1..3 { say $_ } # <--- tangentstorm 20:32
p6eval rakudo ffc17d: OUTPUT«1␤2␤3␤»
timotimo r: my @map; @map[5][5] = "X"; @map.perl.say; @map = Any, map( { when List { $([Any, @($_)]) }; default { Any } }, @map); @map.perl.say 20:33
p6eval rakudo ffc17d: OUTPUT«Array.new(Any, Any, Any, Any, Any, [Any, Any, Any, Any, Any, "X"])␤Array.new(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, "X")␤»
timotimo i can't really tell how to make this not flatten :(
20:33 alester joined
tangentstorm i'm looking for while (<>) { print } ... so far i have: while $_ = lines() { say "{$_}" } 20:34
[Coke] timotimo: use .lol ? 20:35
timotimo tangentstorm: try for lines() { say "($_)" } instead
r: my @map; @map[5][5] = "X"; @map.perl.say; @map = (Any, map( { when List { $([Any, @($_)]) }; default { Any } }, @map)).lol; @map.perl.say
p6eval rakudo ffc17d: OUTPUT«Array.new(Any, Any, Any, Any, Any, [Any, Any, Any, Any, Any, "X"])␤splice() not implemented in class 'Mu'␤ in method reify at src/gen/CORE.setting:5639␤ in method gimme at src/gen/CORE.setting:6058␤ in method perl at src/gen/CORE.setting:6277␤ in method perl at…
20:35 bluescreen10 left
timotimo er, that's not what i meant to do 20:35
hm.
ingy [Coke]: Cool. I'm thinking that a rosettacode-tml test suite is in order, and would be good for promoting acmeism
20:36 bluescreen10 joined
tangentstorm timotimo: { say $_ } works. { say "($_)" } prints the parens... thanks! :) 20:36
for lines() is much more readable :)
so $_ is a default loop variable but not an implicit parameter anymore? 20:37
timotimo for is a "contextualiser", so it sets $_
if you have a sub without parameters, you can use $_, too 20:38
20:38 fgomez joined, rindolf left
tangentstorm oh 20:38
20:38 bluescreen100 joined
tangentstorm so i could do sub echo { say shift } 20:39
tangentstorm tries
hrm. nope
timotimo r: sub echo { say shift }; echo "foo"; echo "foo", "bar";
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling proto of 'shift' will never work with no arguments (lines 1, 1)␤ Expected: :()␤Calling 'echo' will never work with argument types (str) (lines 1, 1)␤ Expected: :()␤Calling 'echo' will never work with argument types (Str, Str…
masak tangentstorm: 'shift' no longer implicitly does @_
timotimo r: sub echo { say shift @_ }; echo "foo"; echo "foo", "bar";
p6eval rakudo ffc17d: OUTPUT«foo␤foo␤»
tangentstorm hrm 20:40
jnthn heh, the compile-time call analysis had a field day there... :) 20:41
20:42 bluescreen10 left
tangentstorm sub echo { say $_ }; for lines() { echo } ... prints "Any()" for each line 20:43
20:44 kaare_ left
FROGGS jnthn: I'm going to commit a fix for 'require', which lets you pass paths too, any objections? 20:44
jnthn: (I've not forget to add tests for symlink/link though)
*forgotten
jnthn FROGGS: Got a diff? 20:45
timotimo tangentstorm: yeah, echo without arguments will not pass $_ by itself 20:46
i wonder ...
r: sub echo { say CALLER::$_ }; for lines() { echo }
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/A0uBLhe8tu:1␤------> sub echo { say CALLER::⏏$_ }; for lines() { echo }␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix␤ statement end␤ …
20:46 erkan joined, erkan left, erkan joined
timotimo r: sub echo { say CALLER::_ }; for lines() { echo } 20:46
p6eval rakudo ffc17d: OUTPUT«(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤(Any)␤»
tangentstorm timotimo: what did you mean by using $_ with a sub without parameters then?
timotimo r: sub echo { say CALLER::<$_> }; for lines() { echo }
p6eval rakudo ffc17d: OUTPUT«Land der Berge, Land am Strome,␤Land der Äcker, Land der Dome,␤Land der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤␤Heiß umfehdet, wild umstritten␤liegst dem Erdteil du inmi…
FROGGS jnthn: something like that gist.github.com/FROGGS/c8aca05e2b9836d21980 20:47
timotimo tangentstorm: i meant that you give the sub echo no signature
you write sub echo { code } instead of sub echo(Str $a) { code }
in that case you can use $_
tangentstorm that's what i did
sub echo { say $_ }; for lines() { echo } 20:48
well
FROGGS jnthn: must clean it up so that pbc|pir will get treated right
tangentstorm timotimo: or maybe the question is how do i get at that parameter? shift @_ ? 20:49
timotimo "that" parameter?
tangentstorm r: sub echo { say shift @_ }; for lines() { echo }
p6eval rakudo ffc17d: OUTPUT«Element shifted from empty list␤ in method gist at src/gen/CORE.setting:10810␤ in method gist at src/gen/CORE.setting:902␤ in sub say at src/gen/CORE.setting:7788␤ in sub echo at /tmp/TWQlagG5gf:1␤ in block at /tmp/TWQlagG5gf:1␤␤»
jnthn FROGGS: Hm, you're requiring there to be a file extension?
FROGGS r: sub echo(*@things) { say @things }; for lines() { echo }
p6eval rakudo ffc17d: OUTPUT«␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤»
FROGGS jnthn: what? 20:50
tangentstorm yeah, @things is empty there
FROGGS jnthn: require should support: require "path/to/module.pm" and require "script.pl"
tangentstorm r: sub echo(*@things) { say length @things }; for lines() { echo } 20:51
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Undeclared routine:␤ length used at line 1␤␤»
FROGGS r: sub echo(*@things) { say @things }; for lines() -> $line { echo $line }
p6eval rakudo ffc17d: OUTPUT«Land der Berge, Land am Strome,␤Land der Äcker, Land der Dome,␤Land der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤␤Heiß umfehdet, wild umstritten␤liegst dem Erdteil du inmi…
FROGGS r: sub echo(*@things) { say @things }; for lines() { echo $_ }
p6eval rakudo ffc17d: OUTPUT«Land der Berge, Land am Strome,␤Land der Äcker, Land der Dome,␤Land der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤␤Heiß umfehdet, wild umstritten␤liegst dem Erdteil du inmi…
tangentstorm yeah
FROGGS several ways to do it
tangentstorm but which way lets me use $_ as an implicit parameter? :D
FROGGS choose according to your taste :o) 20:52
jnthn FROGGS: Yeah, just wondering if somebody will try require './plugins/foo'; and get surprised...
FROGGS tangentstorm: ahhh, now I got it
tangentstorm: you want the perl5 magic...
tangentstorm yeah
FROGGS tangentstorm: let me think a bit
jnthn: well, this should work if 'foo' is a file, no?
timotimo tangentstorm: i was telling you, the "echo" call will not use the $_ that comes from the for loop
tangentstorm r: sub echo(*@things) { say length @things }; for lines() echo 20:53
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Missing block␤at /tmp/tRNXcD5CiU:1␤------> gs) { say length @things }; for lines() ⏏echo␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix␤ parameterized block␤»…
jnthn FROGGS: Oh...it's the . you're looking for, not the / really?
FROGGS: So require 'foo.pm' is enough?
FROGGS jnthn: a dot and a slash triggers it
tangentstorm r: sub echo(Str $line) { say $line }; for lines() echo
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Missing block␤at /tmp/jShY7HKQ4H:1␤------> o(Str $line) { say $line }; for lines() ⏏echo␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix␤ parameterized block␤»…
tangentstorm so a function is not a parameterized block 20:54
jnthn FROGGS: But require 'foo.pm' has no slash, not a dot
tangentstorm ok
FROGGS jnthn: is has a dot
jnthn: dot is okay, slash is okay
jnthn < FROGGS> jnthn: a dot and a slash triggers it
FROGGS jnthn: both make the thing a path
jnthn I took and as, like, && :)
But you seem to mean either will do 20:55
FROGGS jnthn: well, in german language it is meant as ||
:o)
jnthn Ja, aber mein Deutsch ist nonexistent :P
FROGGS saying 'or' means XOR in programming language
hehe
sorear tangentstorm: for requires a syntactic block, with literal braces. A function value has type Block (actually the subtype Sub), but is not the same thing
moritz if you want to iterate using a code object, map exists 20:56
sorear tangentstorm: also, whatever block you pass into for needs to *take* parameters, because that's how the lines get in
jnthn FROGGS: Anyway, making require 'foo.pl' work seems sane...does ths spec actually say it should somewhere? 20:57
moritz iirc the spec says something about how to distinguish require $ModuleName and require $fileName
TimToady++ added it after I nagged about it for some time :-) 20:58
but I don't remember what it was :-)
FROGGS jnthn: perlcabal.org/syn/S11.html#Runtime_Importation
moritz but reading the specs before implementing stuff is a good idea anyway :-)
tangentstorm sorear: yeah.. in perl 5, subs can take an pronoun as a parameter ($_) i'm just trying to figure out how to do that in perl 6 20:59
jnthn FROGGS: ok
FROGGS :o)
20:59 skids left
jnthn tangentstorm: That doesn't happen in Perl 6; it's typically done using method call syntax on the topic instead 21:00
r: for 1..10 { .say }
21:00 dmol1 left
p6eval rakudo ffc17d: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤» 21:00
tangentstorm aha
moritz but blocks default to $_ as an argument
jnthn .say means $_.say
tangentstorm i can deal with .say :)
sorear require $foo # filename
21:00 snearch left
sorear require ::($foo) # module name 21:00
tangentstorm for lines() { .say }
r: for lines() { .say }
p6eval rakudo ffc17d: OUTPUT«Land der Berge, Land am Strome,␤Land der Äcker, Land der Dome,␤Land der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤␤Heiß umfehdet, wild umstritten␤liegst dem Erdteil du inmi…
FROGGS r: $_ = 42; sub a () { say $OUTER::_ }; a() 21:01
tangentstorm beautiful. thanks, jnthn :)
p6eval rakudo ffc17d: OUTPUT«42␤»
FROGGS r: $_ = 42; sub a () { say $OUTER::_ }; for lines() { a() }
p6eval rakudo ffc17d: OUTPUT«42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤»
FROGGS r: $_ = 42; sub a () { say $OUTER::_ }; for lines() -> $_ { a() }
p6eval rakudo ffc17d: OUTPUT«42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤42␤»
sorear FROGGS: CALLER?
timotimo yes, caller vs outer
FROGGS r: $_ = 42; sub a () { say $CALLER::_ }; for lines() { a() }
p6eval rakudo ffc17d: OUTPUT«Land der Berge, Land am Strome,␤Land der Äcker, Land der Dome,␤Land der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤␤Heiß umfehdet, wild umstritten␤liegst dem Erdteil du inmi…
FROGGS tangentstorm: this might be what you want
21:02 xantamoc left
FROGGS r: $_ = 42; sub a (*@things) { say +@things ?? @things !! $CALLER::_ }; for lines() { a() } 21:02
p6eval rakudo ffc17d: OUTPUT«Land der Berge, Land am Strome,␤Land der Äcker, Land der Dome,␤Land der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤␤Heiß umfehdet, wild umstritten␤liegst dem Erdteil du inmi…
FROGGS r: $_ = 42; sub a (*@things) { say +@things ?? @things !! $CALLER::_ }; for lines() { a(1) }
p6eval rakudo ffc17d: OUTPUT«1␤1␤1␤1␤1␤1␤1␤1␤1␤1␤1␤1␤1␤1␤1␤1␤1␤1␤1␤1␤1␤1␤1␤»
FROGGS this 21:03
21:03 dmol1 joined
timotimo FROGGS: maybe @things // $CALLER::_ instead? 21:03
21:03 dmol1 left
FROGGS r: $_ = 42; sub a (*@things) { say @things // $CALLER::_ }; for lines() { a() } 21:04
p6eval rakudo ffc17d: OUTPUT«␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤»
timotimo maybe || instead of //
moritz array variables are never undefined in current rakudo
so the // branch is never taken
FROGGS r: $_ = 42; sub a (*@things) { say @things || $CALLER::_ }; for lines() { a("") }
p6eval rakudo ffc17d: OUTPUT«␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤␤»
timotimo but || will see that @thins has False truthiness?
hm, no?
FROGGS hmmm, weird
tangentstorm FROGGS: for lines() { .say } # <- that's what i wanted. very clean. 21:05
moritz r: sub a { say $CALLER::_ }; $_ = 42; a()
FROGGS I expected to get the lines
p6eval rakudo ffc17d: OUTPUT«42␤»
FROGGS tangentstorm: bah :P
moritz r: sub a { say $CALLER::_ }; for 42 { a() }
p6eval rakudo ffc17d: OUTPUT«42␤»
21:05 labster joined
sorear timotimo: An array which contains a single element of "" is not falsy. 21:05
FROGGS tangentstorm: I thought you need that magic from within another sub 21:06
sorear: makes sense
timotimo oh. i didn't realise froggs put a "" in there
FROGGS was just a test
tangentstorm FROGGS: nah, just trying to make a filter. thanks though. very interesting :)
ingy timotimo: I just remembered you asking about longest token matching…
timotimo yes, it is something i'm fond ot 21:07
of*
tangentstorm hm. but now to actually filter
r: for lines() { .say s/\w/_/ }
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/GGNdNrF0f8:1␤------> for lines() { .say ⏏s/\w/_/ }␤ expecting any of:␤ method arguments␤ postfix␤ infix stopper␤ infix or meta-infix␤ statement end␤ …
tangentstorm r: for lines() { say s/\w/_/ }
p6eval rakudo ffc17d: OUTPUT«Cannot assign to a readonly variable or a value␤ in sub infix:<=> at src/gen/CORE.setting:12872␤ in block at /tmp/GJirpRHpYp:1␤␤»
timotimo r: for lines() -> $_ is rw { say s/\w/_/ } 21:08
p6eval rakudo ffc17d: OUTPUT«Cannot assign to a readonly variable or a value␤ in sub infix:<=> at src/gen/CORE.setting:12872␤ in block at /tmp/_7Jnu8zrLA:1␤␤»
timotimo hm.
tangentstorm r: for lines() { s/\w/_/; .say }
timotimo r: for lines() -> $_ is copy { say s/\w/_/ }
p6eval rakudo ffc17d: OUTPUT«Cannot assign to a readonly variable or a value␤ in sub infix:<=> at src/gen/CORE.setting:12872␤ in block at /tmp/_DmoTcrRza:1␤␤»
rakudo ffc17d: OUTPUT«_and der Berge, Land am Strome,␤_and der Äcker, Land der Dome,␤_and der Hämmer, zukunftsreich!␤_eimat bist du großer Söhne,␤_olk, begnadet für das Schöne,␤_ielgerühmtes Österreich,␤_ielgerühmtes Österreich!␤␤_eiß umfehdet, wild umstritten␤_iegst dem Erdteil du inmi…
timotimo there!
i made it work!
:)
ingy Pegex does not support it out of the box, but the great thing about pegex is its modularity. For instance Pegex::Parser can't handle indentation out of the box, but can easily be subclassed as Pegex::Parser::Indent to do so
tangentstorm r: for lines() { s/\w/_/; .say }
p6eval rakudo ffc17d: OUTPUT«Cannot assign to a readonly variable or a value␤ in sub infix:<=> at src/gen/CORE.setting:12872␤ in block at /tmp/uotK5wPd8O:1␤␤»
ingy the Pegex::Parser::LTM would make you happy :)
*thus
tangentstorm so $_ is read-only.
timotimo tangentstorm: you can get a read-write-able copy of $_ by making the block a pointy block as i did above
FROGGS tangentstorm: all iterators are r/o by default 21:09
masak I don't think that's the problem there.
the problem is that lines() is readonly.
21:09 xilo_ joined
masak r: for lines() -> $_ is copy { s/\w/_/; .say } 21:10
p6eval rakudo ffc17d: OUTPUT«_and der Berge, Land am Strome,␤_and der Äcker, Land der Dome,␤_and der Hämmer, zukunftsreich!␤_eimat bist du großer Söhne,␤_olk, begnadet für das Schöne,␤_ielgerühmtes Österreich,␤_ielgerühmtes Österreich!␤␤_eiß umfehdet, wild umstritten␤_iegst dem Erdteil du inmi…
ingy timotimo: btw %% (assuming it still is part of p6rules) was an idea TimToady took back from Pegex :)
tangentstorm r: for lines() { .s/\w/_/; .say }
FROGGS r: my @a = 1..9; for @a { s/1/2/ }
21:10 census joined
p6eval rakudo ffc17d: ( no output ) 21:10
rakudo ffc17d: OUTPUT«===SORRY!===␤Bogus statement␤at /tmp/H3kN6No7RA:1␤------> for lines() { .s/\w/_/⏏; .say }␤ expecting any of:␤ argument list␤ postfix␤ infix stopper␤ infix or meta-infix␤ prefix or term␤ …
FROGGS hmmm
masak++
timotimo ingy: i don't know anything like %%. is it perhaps the new %?
tangentstorm the bot should say who it's talking to
timotimo er, rather the old %
sorear tangentstorm: $_ is a read-write alias to whatever is in the loop, just like Perl 5
tangentstorm r: for lines() { .s/./!/; .say }
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Bogus statement␤at /tmp/ZxOFSg0fzu:1␤------> for lines() { .s/.⏏/!/; .say }␤ expecting any of:␤ dotty method or postfix␤»
sorear s/the loop/the list/
ingy a %% b == a % b b? 21:11
tangentstorm r: for lines() { .rx s/./!/; .say }
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/177LkP0zqN:1␤------> for lines() { .rx ⏏s/./!/; .say }␤ expecting any of:␤ method arguments␤ postfix␤ infix stopper␤ infix or meta-infix␤ statement en…
sorear r: for lines() -> $_ is copy { s/\/./!/; .say }
p6eval rakudo ffc17d: OUTPUT«Land der Berge, Land am Strome,␤Land der Äcker, Land der Dome,␤Land der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤␤Heiß umfehdet, wild umstritten␤liegst dem Erdteil du inmi…
timotimo a % b b? two terms in a row
ingy for things like optional trailing commas
tangentstorm s/// isn't a function i guess...
sorear no, if it were a function it would have to have completely different syntax 21:12
FROGGS tangentstorm: it is like $_.subst(//)
tangentstorm r: for lines() { .subst /./!/; .say }
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Bogus statement␤at /tmp/nCnbjKqU_y:1␤------> for lines() { .subst /.⏏/!/; .say }␤ expecting any of:␤ dotty method or postfix␤»
tangentstorm r: for lines() { .subst( /./!/ ); .say } 21:13
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Cannot negate / because it is not iffy enough␤at /tmp/fhS2sUpP17:1␤------> for lines() { .subst( /./!/⏏ ); .say }␤»
FROGGS hold in
tangentstorm not iffy enough.
FROGGS hold on
r: for lines() { .subst( /./, '!' ); .say }
p6eval rakudo ffc17d: OUTPUT«Land der Berge, Land am Strome,␤Land der Äcker, Land der Dome,␤Land der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤␤Heiß umfehdet, wild umstritten␤liegst dem Erdteil du inmi…
sorear tangentstorm: What are you trying to do?
timotimo FROGGS: so subtle :)
FROGGS r: for lines() { .subst( /<[a-z]>/, '*' ); .say }
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Unsupported use of - as character range; in Perl 6 please use .. for range, for explicit - in character class, escape it or place as last thing␤at /tmp/RuJYqQZlaw:1␤------> for lines() { .subst( /<[a-⏏z]>/, '*' ); .say …
FROGGS r: for lines() { .subst( /<[a..z]>/, '*' ); .say }
p6eval rakudo ffc17d: OUTPUT«Land der Berge, Land am Strome,␤Land der Äcker, Land der Dome,␤Land der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤␤Heiß umfehdet, wild umstritten␤liegst dem Erdteil du inmi…
FROGGS r: for lines() { .subst( /<[a..z]>/, '*', :g ); .say }
p6eval rakudo ffc17d: OUTPUT«Land der Berge, Land am Strome,␤Land der Äcker, Land der Dome,␤Land der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤␤Heiß umfehdet, wild umstritten␤liegst dem Erdteil du inmi… 21:14
FROGGS meh
tangentstorm FROGGS: that's beautiful but it didn't work :/
sorear r: for lines() -> $_ is copy { $_ = $_.subst( /<[a..z]/, '!' ); .say }
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤regex assertion not terminated by angle bracket␤at /tmp/7znoSHZPVK:1␤------> -> $_ is copy { $_ = $_.subst( /<[a..z]⏏/, '!' ); .say }␤ expecting any of:␤ method arguments␤ argument list␤ pre…
sorear FROGGS: .subst is not an inplace operation
r: for lines() -> $_ is copy { $_ = $_.subst( /<[a..z]>/, '!' ); .say }
FROGGS yeah
p6eval rakudo ffc17d: OUTPUT«L!nd der Berge, Land am Strome,␤L!nd der Äcker, Land der Dome,␤L!nd der Hämmer, zukunftsreich!␤H!imat bist du großer Söhne,␤V!lk, begnadet für das Schöne,␤!ielgerühmtes Österreich,␤!ielgerühmtes Österreich!␤␤H!iß umfehdet, wild umstritten␤!iegst dem Erdteil du inmi…
FROGGS right
tangentstorm r: for lines() { say .subst( /./, '!' ) }
p6eval rakudo ffc17d: OUTPUT«!and der Berge, Land am Strome,␤!and der Äcker, Land der Dome,␤!and der Hämmer, zukunftsreich!␤!eimat bist du großer Söhne,␤!olk, begnadet für das Schöne,␤!ielgerühmtes Österreich,␤!ielgerühmtes Österreich!␤␤!eiß umfehdet, wild umstritten␤!iegst dem Erdteil du inmi…
FROGGS damn... that v5 work is not good for my p6 skills *g*
tangentstorm r: for lines() { say .subst( /Land/, 'LAND' ) }
p6eval rakudo ffc17d: OUTPUT«LAND der Berge, Land am Strome,␤LAND der Äcker, Land der Dome,␤LAND der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤␤Heiß umfehdet, wild umstritten␤liegst dem Erdteil du inmi… 21:15
timotimo that's cute
tangentstorm r: for lines() { say .subst( /./g, 'X' ) }
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Unsupported use of /g; in Perl 6 please use :g␤at /tmp/GSm_hDOScG:1␤------> for lines() { say .subst( /./g⏏, 'X' ) }␤»
FROGGS r: for lines() { say .subst( /Land/, 'SCHMETTERLING' ) }
p6eval rakudo ffc17d: OUTPUT«SCHMETTERLING der Berge, Land am Strome,␤SCHMETTERLING der Äcker, Land der Dome,␤SCHMETTERLING der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤␤Heiß umfehdet, wild umstritten…
tangentstorm r: for lines() { say .subst( /./:g, 'X' ) }
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤You can't adverb that␤at /tmp/x5Lj1rhp4E:1␤------> for lines() { say .subst( /./:g⏏, 'X' ) }␤ expecting any of:␤ pair value␤»
FROGGS SCHMETTERLING der Hämmer \m/
hehe
tangentstorm r: for lines() { say /./X/:g } 21:16
p6eval rakudo ffc17d: OUTPUT«get_attr_str() not implemented in class 'Coroutine'␤current instr.: 'print_exception' pc 111608 (src/gen/CORE.setting.pir:50161) (src/gen/CORE.setting:9722)␤called from Sub 'throw' pc 357537 (src/gen/CORE.setting.pir:155985) (src/gen/CORE.setting:9536)␤called from …
FROGGS I really like that: You can't adverb that
tangentstorm goes to read the manual
sorear tangentstorm: WTH are you trying to do
FROGGS tangentstorm: write it as: s:g/./X/
tangentstorm r: for lines() { say s:g/./X/ } 21:17
p6eval rakudo ffc17d: OUTPUT«Cannot assign to a readonly variable or a value␤ in sub infix:<=> at src/gen/CORE.setting:12872␤ in block at /tmp/_OfemAlnwT:1␤␤»
tangentstorm r: for lines() { say subst :g/./X/ }
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Confused␤at /tmp/9jFlYCVmAH:1␤------> for lines() { say subst :g/.⏏/X/ }␤ expecting any of:␤ dotty method or postfix␤»
tangentstorm r: for lines() { say .subst :g/./X/ }
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Bogus statement␤at /tmp/VdlDc1xAWi:1␤------> for lines() { say .subst :g/.⏏/X/ }␤ expecting any of:␤ dotty method or postfix␤»
tangentstorm gah
sorear dunno if anyone's noticed but you actually do need the -> $_ is copy part
tangentstorm yeah i don't like that :D
sorear I haven't just been including that for fun 21:18
r: for lines() { say .subst(/./,'X',:g) }
p6eval rakudo ffc17d: OUTPUT«XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX␤XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX␤XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX␤XXXXXXXXXXXXXXXXXXXXXXXXXXXX␤XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX␤XXXXXXXXXXXXXXXXXXXXXXXXX␤XXXXXXXXXXXXXXXXXXXXXXXXX␤␤XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX␤XXXXXXXXXXXXXXXXXXXXXXXXXX…
tangentstorm thank you! :)
sorear since .subst is a non-mutating method, it can be called on read-only values
tangentstorm so :g is a thing by itself... a symbol? 21:19
flussence sorear: does that replace p5.10's /r modifier completely then? 21:20
sorear flussence: antedates, technically, but yes
timotimo r: sad :g.perl
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Undeclared routine:␤ sad used at line 1. Did you mean '&say'?␤␤»
timotimo r: say :g.perl
p6eval rakudo ffc17d: OUTPUT«"g" => Bool::True␤»
timotimo it's short syntax for a pair, and pairs are keyword arguments 21:21
or "named arguments"
sorear there are a few places in the grammar where you can use syntactic pairs, but just like for they have to be syntactic
r: s:g/a/b/
p6eval rakudo ffc17d: OUTPUT«No such method 'subst' for invocant of type 'Any'␤ in block at /tmp/UmoxFiOyuF:1␤␤»
sorear r: $_ = "car"; s:g/a/b/ 21:22
p6eval rakudo ffc17d: ( no output )
sorear r: $_ = "car"; my $p = :g; s$p/a/b/ # will not work, s requires syntactic pairs
p6eval rakudo ffc17d: OUTPUT«===SORRY!===␤Unrecognized regex metacharacter / (must be quoted to match literally)␤at /tmp/I0Z4iaMML8:1␤------> $_ = "car"; my $p = :g; s$p⏏/a/b/ # will not work, s requires syntac␤Couldn't find terminator $stop␤at /tmp/I0Z4iaM…
sorear seems the parser interpreted the $ as the regex opener (like in p5, you can use quite a few characters for that)
and then got confused while trying to parse "p/a..." as a regex 21:23
because / has no defined meaning, and all unused punctuation is reserved
tangentstorm hm 21:26
21:31 xilo left, xilo joined
masak 'night, #perl6 21:33
sorear night 'masak
xilo g'night sir
21:34 cognominal__ joined, xilo left, xilo_ left 21:35 xilo joined 21:37 census left 21:38 cognominal left 21:44 sftp_ left, sftp_ joined 22:04 lustlife left 22:06 japhb_ joined
tangentstorm does anyone have an example of running a grammar against an input stream? 22:06
FROGGS $my-grammar.parse( $*INPUT ) or something like that 22:07
r: say $*STDIN
p6eval rakudo ffc17d: OUTPUT«Dynamic variable $*STDIN not found␤ in method gist at src/gen/CORE.setting:10810␤ in method gist at src/gen/CORE.setting:902␤ in sub say at src/gen/CORE.setting:7788␤ in block at /tmp/jbUkHNwdVk:1␤␤»
FROGGS r: say $*INPUT
p6eval rakudo ffc17d: OUTPUT«Dynamic variable $*INPUT not found␤ in method gist at src/gen/CORE.setting:10810␤ in method gist at src/gen/CORE.setting:902␤ in sub say at src/gen/CORE.setting:7788␤ in block at /tmp/YN3QX7MpfK:1␤␤»
FROGGS hmmm
timotimo r: say $*IN;
p6eval rakudo ffc17d: OUTPUT«IO.new(ins => 0, chomp => Bool::True, path => "-")␤»
FROGGS ahh 22:08
tangentstorm does that mean i can say $*IN.chomp = Bool::False
?
FROGGS r: $*IN.chomp = False 22:09
p6eval rakudo ffc17d: OUTPUT«Cannot assign to a readonly variable or a value␤ in block at /tmp/68JIAThYAy:1␤␤»
FROGGS r: say $*IN.^methods
p6eval rakudo ffc17d: OUTPUT«open close eof get getc lines read seek tell write opened t print slurp copy chmod Str flush d e f l r s w x z modified accessed changed say <anon> <anon> <anon>␤»
22:09 alester left
FROGGS hmmm, dunno 22:10
tangentstorm just curious. i don't actually need that :)
FROGGS :o)
tangentstorm i think i might try to write a parser to translate some java code to pascal 22:11
FROGGS O.o
wow, good luck
I'd write a grammar for YAML if I'd want to learn how that works... 22:12
java2pascal sounds a bit heavy
tangentstorm yeah but i actually need to translate some java code to pascal :D
FROGGS ahh, okay
tangentstorm it doesn't have to do everything
22:12 pjcj left 22:13 pjcj joined
FROGGS .oO( java 2 pascal... what a fantastical world ) 22:13
tangentstorm also the java is pretty regularly formatted
FROGGS maybe take a look a Perl6's grammar, so you build up a good structure from the start 22:14
like having tokens for statementlist, statement, blocks, loops, ... 22:15
with the right hierarchy
dalek rl6-roast-data: 9379906 | coke++ | / (4 files):
today (automated commit)
22:15 BenGoldberg joined 22:16 pjcj left 22:17 pjcj joined 22:21 tgt left
dalek kudo/nom: f0aa5a6 | (Tobias Leich)++ | src/Perl6/ModuleLoader.pm:
let require take paths too

If require`s argument contains a slash or dot treat it like a path to a file. This means that the file is searched relative to cwd, variables like CUSTOM_LIBS and INC are not used.
22:22
FROGGS k, test time now
22:28 skids joined 22:30 tgt joined 22:32 bluescreen100 left
dalek ast: 51f422e | coke++ | S32-num/power.t:
pugs fudge
22:36
tangentstorm i'm mystified by this error: gist.github.com/tangentstorm/5375842 22:54
can someone translate? :D
hmm... i said <darkspace> instead of <blackspace> 22:55
FROGGS tangentstorm: you have passed a named arg where none is expected in method parse
or at least that one you passed isnt used
tangentstorm what was the named arg? 22:56
:action?
FROGGS :actions
tangentstorm oh. the tutorial i was looking at called it :action 22:57
perl6advent.wordpress.com/2009/12/2...d-actions/ 22:58
is there something like perldoc -f for rakudo?
and if so how would it work with a class?
FROGGS dunno about perldoc 23:00
[Coke] perl6 --doc 23:01
I think there is a plan for a standlone that does that.
right now you need to specify the full path to the file. I think the plan is eventually for perl6doc Mojo::licious to work.
dalek ast: 7f941a9 | coke++ | S06-multi/syntax.t:
pugs fudge
23:04
tangentstorm thanks :)
23:05 arlinius left 23:11 bbkr joined
bbkr r: sub foo ( --> Buf ){ Buf.new}; say [~](foo) 23:12
p6eval rakudo ffc17d: OUTPUT«Cannot use a Buf as a string, but you called the Str method on it␤ in method Str at src/gen/CORE.setting:7541␤ in method Str at src/gen/CORE.setting:882␤ in method Stringy at src/gen/CORE.setting:894␤ in sub infix:<~> at src/gen/CORE.setting:1284␤ in sub infix…
sorear has there been any discussion on a perl6 --doc "safe mode" sort of thing? I think a lot of perl 5 people would be very surprised if perldoc started running BEGIN blocks and use statements, althogh some of that is needed for metamodelling 23:13
bbkr looks like reduction ignored return value type
sorear r: say [~](Buf.new)
p6eval rakudo f0aa5a: OUTPUT«Cannot use a Buf as a string, but you called the Str method on it␤ in method Str at src/gen/CORE.setting:7541␤ in method Str at src/gen/CORE.setting:882␤ in method Stringy at src/gen/CORE.setting:894␤ in sub infix:<~> at src/gen/CORE.setting:1284␤ in sub infix…
sorear exactly the same
bbkr r: [~](Buf.new) 23:14
p6eval rakudo f0aa5a: OUTPUT«Cannot use a Buf as a string, but you called the Str method on it␤ in method Str at src/gen/CORE.setting:7541␤ in method Str at src/gen/CORE.setting:882␤ in method Stringy at src/gen/CORE.setting:894␤ in sub infix:<~> at src/gen/CORE.setting:1284␤ in sub infix…
sorear foo and Buf.new are both expressions that are typed Buf and return a Buf
FROGGS r: [~](Buf.new.decode) 23:15
p6eval rakudo f0aa5a: ( no output )
sorear r: Buf.new ~ Buf.new
p6eval rakudo f0aa5a: ( no output )
sorear r: &infix:<~>(Buf.new)
p6eval rakudo f0aa5a: OUTPUT«Cannot use a Buf as a string, but you called the Str method on it␤ in method Str at src/gen/CORE.setting:7541␤ in method Str at src/gen/CORE.setting:882␤ in method Stringy at src/gen/CORE.setting:894␤ in sub infix:<~> at src/gen/CORE.setting:1284␤ in sub infix…
sorear i think you've found a genuine rakudobug
bbkr r: say [~](Buf.new, Buf.new) # how to explain this one? 23:16
p6eval rakudo f0aa5a: OUTPUT«Buf:0x<>␤»
sorear the two arg ~ supports Buf but not the one arg version
bbkr: Because [] treats two arg and one arg lists fundamentally differently.
[~](X,Y) -> X ~ Y
[~](X) -> &infix:<~>( X )
[~]() -> &infix:<~>( ) 23:17
bbkr thanks for explanation, reporting bug right now...
sorear [~](X,Y,Z) -> (X ~ Y) ~ Z
23:20 frd|afk joined
BenGoldberg r: say Buf.new 23:23
p6eval rakudo f0aa5a: OUTPUT«Buf:0x<>␤»
BenGoldberg r: say Buf:0x<>
p6eval rakudo f0aa5a: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/YAc4cDTBxw:1␤------> say Buf⏏:0x<>␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix␤ statement end␤ statement modifier␤ statemen…
FROGGS r: print Buf.new 23:24
p6eval rakudo f0aa5a: OUTPUT«Cannot use a Buf as a string, but you called the Str method on it␤ in method Str at src/gen/CORE.setting:7541␤ in method Str at src/gen/CORE.setting:882␤ in method print at src/gen/CORE.setting:7972␤ in method print at src/gen/CORE.setting:7966␤ in sub print a…
23:24 frdmn left
FROGGS r: say Buf.new.perl 23:24
p6eval rakudo f0aa5a: OUTPUT«Buf.new()␤»
23:24 fgomez left
labster r: say Buf ~~ Cool 23:25
p6eval rakudo f0aa5a: OUTPUT«False␤»
bbkr @t>>.map: { self._element( $_ ) } # is this the correct way to parallelize element processing when it is a param to a function?
does not give any speedup 23:26
FROGGS NYI
bbkr oh, saving snippet for the future then :) 23:27
FROGGS :o)
tangentstorm hmm 23:30
my @tokens = Forthy::Grammar.parse( "hello world", :actions($actions)); # <- works fine
my @tokens = Forthy::Grammar.parse( $*IN, :actions($actions)); # <- constantly gives errors
"No such method 'substr' for invocant of type 'IO'" 23:31
timotimo yeah, try $*IN.read mayhaps?
tangentstorm i don't use "substr" anywhere
FROGGS maybe you have to assign to a variable first
23:31 arlinius joined
FROGGS ohh, what timotimo said 23:31
tangentstorm Not enough positional parameters passed; got 1 but expected 2 23:32
.read(something) i guess
r: say $*IN.read; 23:33
p6eval rakudo f0aa5a: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method read at src/gen/CORE.setting:7925␤ in block at /tmp/ihTfkmXpry:1␤␤»
timotimo there should be a function that gets the complete file content
r: say $*IN.^methods
p6eval rakudo f0aa5a: OUTPUT«open close eof get getc lines read seek tell write opened t print slurp copy chmod Str flush d e f l r s w x z modified accessed changed say <anon> <anon> <anon>␤»
timotimo yeah, slurp is the one you want
tangentstorm thanks
is there something like .^methods to show the arguments for a method?
timotimo also, i think slurp as a sub without arguments will operate on $*IN
yes, there is 23:34
tangentstorm :r say slurp
timotimo r: say "Foo".^methods[0].signature
p6eval rakudo f0aa5a: OUTPUT«:(Str : :value(:$value) = { ... }, Mu *%_)␤»
tangentstorm :r say slurp.signature
timotimo r: say "Foo".^methods[0].signature; say "Foo".^methods[0].^name;
p6eval rakudo f0aa5a: OUTPUT«:(Str : :value(:$value) = { ... }, Mu *%_)␤Submethod␤»
timotimo r: say "Foo".^methods[0].signature; say "Foo".^methods[0];
p6eval rakudo f0aa5a: OUTPUT«:(Str : :value(:$value) = { ... }, Mu *%_)␤BUILD␤»
timotimo you need to put the : after r
and now i'm going to bed
tangentstorm oh :)
thanks for your help :)
r: say slurp.signature 23:35
p6eval rakudo f0aa5a: OUTPUT«No such method 'signature' for invocant of type 'Str'␤ in block at /tmp/tW_KHwVl0L:1␤␤»
FROGGS .tell jnthn that I can "require PATH" now (pushed), but can't import subs
yoleaux FROGGS: I'll pass your message to jnthn.
timotimo r: say &slurp.signature
p6eval rakudo f0aa5a: OUTPUT«:()␤»
tangentstorm ah yeah & :)
timotimo "slurp.signature" will be parsed as "slurp().signature()"
tangentstorm good times
FROGGS .tell jnthn I've got this patch locally applied, test file is there too: gist.github.com/FROGGS/a9ef1432e1f9d37e9770
tangentstorm cool
yoleaux FROGGS: I'll pass your message to jnthn.
23:36 Vlavv joined 23:38 fgomez joined
FROGGS .tell jnthn won't write tests now, but will go deeper into the rabbit hole 23:39
yoleaux FROGGS: I'll pass your message to jnthn.
23:39 Vlavv_ left 23:40 japhb_ left 23:45 tgt left 23:53 berekuk left 23:55 berekuk joined
tangentstorm WHAT IS WRONG WITH YOU PEOPLE??? It's supposed to be an unreadable mess, and you let me do this??? :D gist.github.com/tangentstorm/5375842 23:56
way too nice. take it back. :)
sorear tangentstorm: on line 7, better to use [] than () 23:59