»ö« 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.45167261» | ||
BenGoldberg | r: my $t = now; my $x = [||] ^5; say now - $t; say $x; | ||
p6eval | rakudo 460c2a: OUTPUT«0.044185661» | ||
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.47245281» | ||
00:42
edgeuplink left
|
|||
flussence | r: my $x = so any(^50000); say now - INIT now; say $x | 00:42 | |
p6eval | rakudo 460c2a: OUTPUT«1.53298694True» | ||
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«IncreaseIncreaseIncreaseIncreaseIncreaseIncreaseIncreaseIncreaseIncreaseIncreaseIncreaseIncreaseIncreaseIncreaseIncrease» | ||
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«IncreaseIncreaseDecreaseDecreaseIncreaseDecreaseDecreaseIncreaseDecreaseDecreaseIncreaseIncreaseDecreaseIncreaseDecrease» | ||
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 rowat /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 declaredat /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 '©'?» | ||
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 failedFAILED 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 failedFAILED 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,2Undeclared routine: 'ma' used at line 1Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting lin… | ||
..rakudo ffc17d: OUTPUT«===SORRY!===Variable '$a' is not declaredat /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 , insteadat /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 declaredat /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 traitParse failedFAILED 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«123» | ||
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«foofoo» | ||
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 rowat /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 umstrittenliegst 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 umstrittenliegst 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 umstrittenliegst 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 blockat /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 blockat /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«12345678910» | 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 umstrittenliegst 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«4242424242424242424242424242424242424242424242» | ||
FROGGS | r: $_ = 42; sub a () { say $OUTER::_ }; for lines() -> $_ { a() } | ||
p6eval | rakudo ffc17d: OUTPUT«4242424242424242424242424242424242424242424242» | ||
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 umstrittenliegst 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 umstrittenliegst dem Erdteil du inmi… | ||
FROGGS | r: $_ = 42; sub a (*@things) { say +@things ?? @things !! $CALLER::_ }; for lines() { a(1) } | ||
p6eval | rakudo ffc17d: OUTPUT«11111111111111111111111» | ||
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 rowat /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 statementat /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 statementat /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 rowat /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 umstrittenliegst 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 statementat /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 enoughat /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 umstrittenliegst 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 thingat /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 umstrittenliegst 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 umstrittenliegst 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 bracketat /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 umstrittenliegst 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 :gat /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 thatat /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!===Confusedat /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 statementat /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«XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX… | ||
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 syntacCouldn't find terminator $stopat /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 rowat /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 |