»ö« 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 sorear on 4 February 2011.
00:00 lue joined 00:01 __rnddim__ joined 00:02 fgomez left 00:03 __rnddim__ left 00:04 __rnddim__ joined, gdey left 00:12 cognominal left 00:16 fgomez joined 00:20 cognominal joined 00:25 Targen joined 00:46 Gwyxx left 00:54 gdey joined 00:55 anuby joined 01:11 cognominal left 01:17 cognominal joined 01:18 hypolin joined 01:32 gdey left 01:51 clkao left 01:56 clkao joined 02:00 fgomez left 02:08 xenoterracide left 02:10 swarley-freenode is now known as swarley, xenoterracide joined 02:12 fgomez joined 02:17 hypolin left 02:22 lustlife joined 02:24 skids left 02:40 japhb_ left 02:45 census left 02:50 bruges joined
colomon tadzik, et al: current panda builds with rakudo c2910e23bc66610d7a91036da67b365eb4cb1c25. It does not build with the current rakudo. I think it did not work with rakudo token string { 02:54
\" ~ \" ( <str> | \\ <str_escape> )*
}
02:54 bruges_ left
colomon boo 02:54
token string {
\" ~ \" ( <str> | \\ <str_escape> )*
}
is where it is failing
continuing my thought before my cut-n-paste error there, I think it did not work with rakudo c2910e23bc66610d7a91036da67b365eb4cb1c25 and the current rakudo's parrot; however, that might have been a weird artifact of my build process. 02:55
I'm guessing this may be because of a recent change to NQP? It seems like there have been a ton of them recently... 02:56
02:58 dayangkun left
colomon trying to bisect now, but since it needs to do a full rakudo rebuild from scratch every time, this will be pretty slow 03:03
03:15 orafu left, orafu joined 03:18 kst left, kst` is now known as kst 03:24 dayangkun joined 03:36 Gwyxx joined 03:49 hypolin joined
colomon actually completely failing to even get panda started on just the first step of the bisect, without any hint that it's the same as the bug. sigh. 03:57
bedtime, I think.
sorear night colomon 04:01
04:03 Harzilein left 04:11 SamuraiJack joined 04:32 benabik joined 04:35 SamuraiJack left 04:38 uvtc joined 04:41 adu joined
uvtc phenny: tell moritz Nice job getting a draft of containers.pod written. Makes it clear that assignment is about filling containers, whereas binding is about connecting a variable to a container or value. Might be instructive to add an explanation of what `my @a := <1 2 3>` is/does (and how it's different from `my @a = <1 2 3>`). moritz++ 04:46
phenny uvtc: I'll pass that on when moritz is around.
04:47 SamuraiJack joined, __rnddim__ left
adu hi all 04:53
perl6: say <:Letter> ~~ "a" 04:54
p6eval rakudo ce1827, niecza v24-28-g2a7e0fd: OUTPUT«False␤»
adu perl6: say "a" ~~ <:Letter>
p6eval rakudo ce1827, niecza v24-28-g2a7e0fd: OUTPUT«False␤»
lue perl6: say "a" ~~ /<:Letter>/ 04:55
p6eval rakudo ce1827, niecza v24-28-g2a7e0fd: OUTPUT«「a」␤␤»
adu lue: thanks
lue np
adu i have occasional bouts of stupidity 04:56
dalek c: ba2960a | (John Gabriele)++ | lib/containers.pod:
minor grammar/punctuation tweaks
04:57
04:57 preflex_ joined, preflex left, uvtc left 04:58 preflex_ is now known as preflex 04:59 yakshavr joined 05:00 rindolf joined 05:10 adu_ joined 05:12 adu left, adu_ is now known as adu 05:15 quester joined 05:28 anuby left, anuby joined 05:36 kaleem joined, crab2313 joined 05:43 immortal left, erkan joined, erkan left, erkan joined 05:51 SamuraiJack left 05:52 simcop2387 left 05:53 adu_ joined 05:54 simcop2387 joined 05:55 adu left 06:06 wk left 06:15 lue left 06:32 denisboyun joined 06:35 denisboyun left 06:36 denisboyun joined 06:42 denisboyun left 06:45 denisboyun joined 06:46 salv01 left 06:47 xinming left 06:48 xinming joined 06:49 adu_ left 06:52 salv0 joined
dalek p: e7b8577 | (Arne Skjærholt)++ | src/6model/reprs/VMArray.c:
Fix brainos spotted by kboga++.
06:56
06:56 cognominal left 06:58 denisboyun left
arnsholt Does kboga usually hang around here any? 07:00
07:02 Targen left, avi_ left
diakopter arnsholt: irclog.perlgeek.de/search.pl?channe...oga&q= 07:03
07:04 cognominal joined
arnsholt Oh, the clogs. Good idea =) 07:05
07:13 rhinux joined 07:17 FROGGS joined 07:18 dayangkun left 07:30 dayangkun joined 07:37 SamuraiJack joined 07:38 crab2313 left 07:47 cognominal left 07:53 crab2313 joined 07:57 cognominal joined 08:09 quester left
FROGGS star: use JSON::Tiny; say from-json( '{ "a" : 1 }' ); 08:11
p6eval star 2013.02: OUTPUT«("a" => 1).hash␤»
FROGGS locally I get: 08:13
Unable to parse expression in string; couldn't find final \"
in any FAILGOAL at src/stage2/QRegex.nqp:1094
FROGGS investigates
08:14 fhelmberger joined
FROGGS r: say "abc" ~~ /<-["\\\t\n]>+/ 08:15
p6eval rakudo ce1827: OUTPUT«#<failed match>␤»
FROGGS r: say "abc" ~~ /<-["\\]>+/
p6eval rakudo ce1827: OUTPUT«「abc」␤␤»
FROGGS r: say "abc" ~~ /<-["\\\t]>+/
p6eval rakudo ce1827: OUTPUT«#<failed match>␤»
FROGGS ohh, that was quick
(and my fault I guess)
r: say "abc" ~~ /<-[\t]>+/ 08:16
p6eval rakudo ce1827: OUTPUT«(timeout)»
FROGGS r: say "abc" ~~ /<-[\n]>+/
p6eval rakudo ce1827: OUTPUT«「abc」␤␤»
FROGGS nqp: say("abc" ~~ /<-[\t]>+/) 08:17
TimToady n: say "abc" ~~ /<-["\\\t\n]>+/
p6eval nqp: OUTPUT«(timeout)»
niecza v24-28-g2a7e0fd: OUTPUT«「abc」␤␤»
TimToady niecza doesn't have a problem with it
FROGGS moritz: I've broken your JSON::Tiny
I patched nqp recently to handle stuff like <[\w]-[\D]>+ right 08:18
diakopter o_O
TimToady nr: say "abc" ~~ /<-[ " \\ \t \n ]>+/
FROGGS I guess it is something about -[\t]'s zerowidth
p6eval niecza v24-28-g2a7e0fd: OUTPUT«「abc」␤␤»
..rakudo ce1827: OUTPUT«#<failed match>␤»
TimToady why would that have a zerowidth? 08:19
+ and - never have zerowidth, only ! and ?
diakopter nqp-jvm: say("abc" ~~ /<-[\t]>+/)
p6eval nqp-jvm: OUTPUT«(timeout)» 08:20
FROGGS TimToady: that explains it
moritz FROGGS: then please unbreak it :-) 08:22
phenny moritz: 04:46Z <uvtc> tell moritz Nice job getting a draft of containers.pod written. Makes it clear that assignment is about filling containers, whereas binding is about connecting a variable to a container or value. Might be instructive to add an explanation of what `my @a := <1 2 3>` is/does (and how it's different from `my @a = <1 2 3>`). moritz++
FROGGS moritz: already doing
grondilu how would you go about a function that displays a number with its decimals in slightly vanishing shades of gray? I mean, the second decimal being lighter than the second, and so on?
.oO(maybe that's too much to ask and not Perl6 specific enough)
08:23
08:23 Ovidius left
moritz grondilu: which output medium? 08:24
grondilu X terminal
grondilu sucks at using escape sequences
moritz use Term::ANSIColor; 08:25
grondilu oh, good idea.
TimToady you aren't going to get shades of gray from that though 08:26
08:26 m0li left
TimToady at best you get bright and dim of each color 08:26
08:30 ObseLeTe joined
sorear on many terminals you can get 4 shades of gray with SGR sequences 08:36
08:39 wk joined 08:40 hoelzro|away is now known as hoelzro 08:43 salv0 left, salv0 joined 08:48 kivutar joined 09:06 woosley joined 09:07 sqirrel joined 09:11 kaleem left 09:12 ozmq joined, kivutar left, kivutar joined 09:17 am0c left 09:18 Moukeddar joined
masak good morning, #perl6 09:19
tadzik hello masak 09:20
Moukeddar good morning all \m/
or is it \o/ ? both are good i guess 09:21
masak \m/ work well with Moukeddar (or masak), I guess ;) 09:23
maybe it's someone cheering with very long hair, that hangs over their eyes.
Moukeddar \n/ , this would be it 09:24
i believe \m/ is related to rock
how are you doing btw ?
dalek p: 2694596 | (Tobias Leich)++ | src/QRegex/P (2 files):
remove zerowidth for things which have no zero width

I added this previously because I though that negations automagically should force zerowidth. This patch unbreaks JSON::Tiny.
masak Moukeddar: me? fine. busy.
have to use two clones just to do dayjob right now. 09:25
dalek kudo/nom: c315c8b | (Tobias Leich)++ | tools/build/NQP_REVISION:
bump nqp revision, this unbreaks JSON::Tiny
tadzik yay
Moukeddar aw wouldn't that be slaving ? although, good to hear from you again :)
tadzik FROGGS++
FROGGS FROGGS-- 09:26
breaking and then unbreaking things is not that good :o)
masak it's not slavery. we're on a rolling schedule of chairmanship. 09:27
FROGGS++ # progress in the long run 09:28
FROGGS ohh thanks
masak this is what eventual consistency is all about. "we'll get there"
09:28 cognominal left
Moukeddar hope all goes well, right now i'm passing my internship :) 09:30
dalek ast: 7fba797 | (Tobias Leich)++ | S05-metasyntax/charset.t:
add another charset subtraction test
09:31
TimToady rosettacode.org/wiki/Maze_solving#Perl_6 <-- why I am not in bed yet 09:32
feel free to improve
TimToady improves by going to bed... 09:33
09:33 dakkar joined
FROGGS TimToady: that's not A*, right? 09:34
09:35 cognominal joined 09:37 simcop2387 left, daxim joined 09:39 simcop2387 joined
masak FROGGS: no, it looks more like "keep your right hand on the wall" with backtracking. 09:40
I guess A* is possible (though I'm still not used to thinking in terms of it), at least if you know where the exit is located. 09:41
nowadays I basically see A* as an optimization of breadth-first. breadth-first is a bit tricky/wasteful to do if you're a mouse in a maze ;)
FROGGS okay ya, if you dont know where the exit is located that you can't use A* 09:43
09:43 kivutar left
masak TimToady: what's with all the magic numbers in @maze? :) 09:45
Ulti upload.wikimedia.org/wikipedia/comm...f/MAZE.png wat 09:46
FROGGS Ulti: wow, nice desktop wallpaper :o)
masak ...if you like headaches. 09:47
masak fondly remembers coding recursive maze solvers in Turbo BASIC, and blowing the stack in the process 09:48
Moukeddar Migraine guaranteed
Ulti now I know what to hand to bored children
FROGGS hehe
tadzik a piece of paper with "see the other side" on both sides? :)
Moukeddar that'll blow the poor kid's stack too
sorear I prefer BFS for maze solvers because it uses O(sqrt n) memory 09:49
Ulti tadzik thats a test for science aptitude to see if they cobble together a microscope to check the other four sides right? 09:50
masak sorear: I *prefer* solving a maze on a quantum computer, because it gives a quadratic speedup :P
Moukeddar hehe, when they're available 09:51
masak oh, they exist.
they just don't do very many qubits yet.
masak recommends www.cs.berkeley.edu/~vazirani/algorithms.html for anyone who's interested 09:53
sorear oh hey umesh vazirani I know that name 09:54
masak Aaronson's former mentor.
Moukeddar they do ?
how their speed is measured ?
*is their speed
sorear yes. 09:55
Ulti arxiv.org/abs/quant-ph/0205095 need quite a lot of qbits to do anything useful :)
sorear masak: given vazirani's background I'm shocked that there's only one quantum chapter
masak I dunno. I think some pretty cool stuff can be made with 16 qubits. 09:56
sorear: yeah. but it's a good chapter :)
sorear The fundamental problem with quantum computing is, in an acronym, TEMPEST.
masak do expand.
sorear oh, apparently it's not an acronym
Moukeddar i believe this is all lab-grade installments , is it practical ?
sorear masak: CIA codename for technologies which study the internal state of a computer via leaked electromagnetic radiation. 09:57
masak Moukeddar: it's on the Babbage stage, clearly. but there's nothing in principle to stand in the way of its eventual practicality.
sorear *enemy computer
Moukeddar So, Singularity is near ?
sorear Moukeddar: I don't see any reason why AGI and QC should be deeply connected 09:58
masak sorear: so you're saying, it's intractably difficult to keep states un-collapsed long enough?
sorear masak: yes, because the expanding shell of radiation coming off your computer contains an indelible record of the history of every calculation it does 09:59
masak hehe, "Tiny ElectroMagnetic Particles Emitting Secret Things"
sorear quantum computing requires interference between multiple paths to the same final world-state
Ulti Moukeddar www.nicolelislab.net/?p=369
sorear but if the final world-state contains a record of the computation history, there can be no interference. 10:00
masak quietly wonders if QC could generate a uniformly random balanced-brackets string in O(n) time
10:01 hypolin left
masak sorear: I bet you're aware of Aaronson's bet? 10:01
sorear the CIA is happy with a computer that has "very low" emissions, but for QC you need *zero*.
masak: Yes.
masak sorear: I'm also pretty sure you know about the results around error-correction.
sorear Yes. 10:02
masak so -- trying to construct a consistent world view around your statements -- you believe error-correction is not enough to make QC feasible, but you're too nice to take Scott's money. 10:03
10:03 simcop2387 left
sorear masak: Error correction is not enough, you also need working qubits. I don't think Scott would disagree with this :) 10:04
10:04 simcop2387 joined
sorear You need qubits that have a 97% chance of not radiating anything. 10:05
Ulti people just need to get into bio computing then classical computing becomes cheap and powerful
sorear Unless the threshold was improved again in the last few months.
masak I just can't help picturing a Babbage-age detractor saying "you need transistors of impossible accuracy!" 10:06
sorear masak: The accuracy bar is high, but I'm sure it will be reached within my lifetime. 10:07
it's also going to be very interesting to see the YEAR * QBITS -> COST function. 10:08
are we ever going to have handheld nanokelvin cryostats, or room temperature qbits? 10:09
masak nodnod 10:10
10:10 Moukeddar_ joined
masak ok, so you're not a detractor, you're just saying "we ain't there yet". 10:10
sorear right. 10:11
masak then we are in violent agreement. 10:12
sorear I'm also saying that it's going to be a _while_
Moukeddar_ sorry, the connection is breaking, i'm on a free wifi network, but the article is awesome, it's mind blowing, how long would it take to do that to the human brain 10:13
masak that's OK. we're still doing useful QC research in the meantime ;)
sorear we may have net energy production from fusion first.
Ulti www.jbioleng.org/content/3/1/11 I'd rather see the fruition of this sort of computation in my life time, mostly because it solves robotics at the same time. You just put your computer in the body of an animal that already exists.
10:14 Moukeddar left
sorear Moukeddar: i'm sure it could be done today if there weren't huge safety issues 10:14
10:14 Moukeddar_ left
sorear the thing about rats is that if you kill them as part of an expirement, that's usually considered OK 10:14
10:14 anuby left 10:15 Moukeddar_ joined
sorear Moukeddar: i'm sure it could be done today if there weren't huge safety issues 10:15
the thing about rats is that if you kill them as part of an expirement, that's usually considered OK
there's very little you can do to a human brain that won't cause it to fall apart in short order
Ulti yeah if humans werent at all ethical there is an awful lot you could do with humans already
sorear scar formation in brain tissue works very weirdly
Ulti genetic engineering in human cells is easier than say plants
there isnt a cell wall in the way and there are lots of viral vectors for human cells known 10:16
sorear but if you do the experiments quickly you don't need to think about scarifcication
Ulti sorear yeah also who is going to say yes to invasive surgery
10:17 Moukeddar_ left
Ulti maybe for someone in a coma or something you can imagine some use case 10:17
10:17 Moukeddar_ joined
Ulti they've already done single electrode interfaces for people who can't move their bodies 10:18
sorear Ulti: can't do anything with people in comas, informed consent blah blah blah
Ulti dunno you could sign a piece of paper /before/ the coma
sorear but there are plenty of people who do "blink once for yes, twice for no"
Ulti if I can give my organs away....
10:18 Moukeddar__ joined
Ulti wonders how long until NQP is ported to E. coli VM 10:19
shouldn't be too hard... >:3
10:19 ObseLeTe left
sorear I think the main categories are 1. people with severe disabilities investing personally in bionic eye, etc research 2. self-experimentation 10:20
masak I thought we all agreed not to say "bionic" :P
Ulti yeah but that also means research is always focussed on replacing broken parts rather than doing something simple to improve working bits of your body 10:21
like why not have an implant in your lens so you can do wacky things like have telephoto zoom
sorear I wonder if it would be possible to modify neurons via gene therapy to add an optical interface
Moukeddar__ basic maintenance 10:22
Ulti even if you botch that artificial lens' are actually not as hard to fix than say screwing up your retina
10:22 Moukeddar_ left
sorear hack the voltage-gated sodium channel to be florescent 10:22
masak six million rupee man: www.youtube.com/watch?v=dzcC4VwFm3A
Moukeddar__ wouldn't that torch your brain ?
sorear I know they did some very cool stuff recently with C.elegans mutants where all of the neurons are photosensitive like rods, and they can use a laser to modify the worms' behavior 10:23
up to "lay eggs on command" 10:24
Moukeddar__ wow, if this is public i wonder what's confidential !
masak nematodes with frikkin' lazers on their neurons.
Ulti Moukeddar__: they use your own tooth to reduce the amount of maintenance needed en.wikipedia.org/wiki/Osteo-odonto-...prosthesis 10:25
10:25 neilb_ joined
Ulti thats the thing artificial doesnt need to mean artifice like silicon and terminator esk read outs 10:25
its not that hard to grow your tissue in a lab and do something with it
Moukeddar__ duct tape for humans : 10:26
Ulti and with stem cell reprogramming you can even take skin and get out some neuronal tissue
sorear that's just because neurons are modified skin cells
embryology is weird
Ulti swab your cheak grow some culture, reprogram to neurones, put in some artificial neural circuits
Moukeddar__ embryo ? 10:27
sorear ?
masak ¿
Ulti wanders off to the office 10:28
sorear what I think is going to happen in the next 10-20 years is that we're going to have viable neuron-level simulations of the rodent brain, and that is going to be a game-changer in too many ways to count 10:31
because for all the things you *can* do to mice, there are even more you can't 10:32
Moukeddar__ only for rats ?
sorear I say mice because they have smaller brains
10:36 labster left
sorear points at en.wikipedia.org/wiki/Protein_kinase_M%CE%B6 for an example of state of the art research in whole animals 10:37
masak how do I go from a Date object to the last day in the same month? 10:40
r: my $today = Date.today; say $today
p6eval rakudo c315c8: OUTPUT«2013-03-06␤»
masak r: my $today = Date.today; say $today.clone(:day( $today.days-in-month )) 10:41
p6eval rakudo c315c8: OUTPUT«2013-03-31␤»
sorear masak: I would go to the next month, then the first day of the same month, then the previous day
masak this seems to work.
10:41 rindolf left
sorear actually it would work better to swap steps 1 and 2 10:41
10:41 rindolf joined
masak r: my $today = Date.today; say $today.clone(:day(1)).delta(:month(1)).delta(:day(-1)) 10:42
p6eval rakudo c315c8: OUTPUT«Not enough positional parameters passed; got 1 but expected 3␤ in method delta at src/gen/CORE.setting:11881␤ in block at /tmp/Hslac8tQGM:1␤␤»
masak oh!
sorear so it's now quite clear that long-term memory is an active process: long-term memories can be erased by inhibiting a "refresh" enzyme
masak r: my $today = Date.today; say $today.clone(:day(1)).delta(1, month).delta(-1, day)
p6eval rakudo c315c8: OUTPUT«2013-03-31␤»
masak \o/
10:42 sqirrel left
sorear but we still know pretty much nothing about how the memories are *encoded* 10:43
how does the mouse's brain go from PKM\zeta to "yellow things will shock me and I need to avoid them"?
FROGGS nr: say "abc" ~~ /<-[ " \\ \t \n ]>+/ 10:44
p6eval niecza v24-28-g2a7e0fd: OUTPUT«「abc」␤␤»
..rakudo c315c8: OUTPUT«#<failed match>␤»
FROGGS nr: say "abc" ~~ /<-["\\\t\n]>+/ 10:45
p6eval niecza v24-28-g2a7e0fd: OUTPUT«「abc」␤␤»
..rakudo c315c8: OUTPUT«#<failed match>␤»
FROGGS why
10:45 Moukeddar__ left
sorear I'm going to blame miscompilation of some kind 10:46
FROGGS damn, nqp revision
10:46 pmurias joined
masak already loves the .delta method 10:47
constant last-month = Date.today.delta(-1, month).month;
dalek kudo/nom: fec64aa | (Tobias Leich)++ | tools/build/NQP_REVISION:
bump NQP revision
colomon has anyone gotten panda to actually work? I just built rakudo.... hurm
FROGGS colomon: pull again
colomon yes, saw the dalek message in the middle of typing that last message. 10:48
FROGGS ya, sorry for that ó.ò
looks like I need to pull before getting the right nqp revision
dalek kudo-js: 5659fa7 | (Pawel Murias)++ | runtime (6 files):
Move STables, Hash and the object model bootstrap into seperate modules.
10:49
10:50 rindolf left, rindolf joined
masak I submit this cute little helper program to you for review: gist.github.com/masak/5098506 10:51
colomon FROGGS: do we have tests in roast for this issue? 10:52
masak for two years now, I've re-implemented that one as a one-liner in Rakudo every new month when I needed it (for my work hour reports).
now I finally wrote it down as a permanent solution.
pretty satisfied with how it turned out ;)
pmurias masak: the only possible change would be to use Date.new($year,$month,$first.day-in-month) instead of $first.clone( :day($first.days-in-month)) 10:58
11:04 crab2313 left, rindolf left, rindolf joined
FROGGS colomon: we have since an hour or so 11:05
colomon glad to hear it. 11:06
11:07 pmurias left
masak pmurias: good suggestion. I'll do that. 11:08
11:10 rhinux left 11:12 rindolf left, rindolf joined
masak pmurias: updated gist.github.com/masak/5098506 :) 11:12
11:20 rindolf left
masak (creating very small, local subs)++ 11:20
11:20 rindolf joined 11:21 kaleem joined 11:26 donaldh joined
FROGGS nr: say "abc" ~~ /<-["\\\t\n]>+/ # \o/ 11:30
p6eval rakudo fec64a, niecza v24-28-g2a7e0fd: OUTPUT«「abc」␤␤»
masak \o/
11:31 woolfy joined 11:33 rindolf left
masak r: my $today = Date.today; say ($today ... *).first(*.month != $today.month).delta(-1, day) 11:34
p6eval rakudo fec64a: OUTPUT«2013-03-31␤»
11:34 rindolf joined
masak heh. a bit wasteful, I guess ;) 11:34
sorear r: say (Date.today, *.delta(1,day) ...^ { .day == 1 })[*-1] 11:36
p6eval rakudo fec64a: OUTPUT«2013-03-31␤»
sorear Why does $today ... * work?
I thought that was only for numbers. 11:37
Also why is the Gregorian calendar built in to a universal language? 11:38
r: say Date.new('2000-02-29')
p6eval rakudo fec64a: OUTPUT«2000-02-29␤»
sorear r: say Date.new('2000-02-28').succ
p6eval rakudo fec64a: OUTPUT«2000-02-29␤»
sorear r: say Date.new('1990-02-28').succ
p6eval rakudo fec64a: OUTPUT«1990-03-01␤»
sorear r: say Date.new('1900-02-28').succ
p6eval rakudo fec64a: OUTPUT«1900-03-01␤»
sorear r: say Date.new('1752-09-02').succ 11:39
p6eval rakudo fec64a: OUTPUT«1752-09-03␤»
masak as to "Why is the Gregorian calendar...", I don't see a contradiction there. 11:41
sorear r: say Date.new('1300-02-28').succ
p6eval rakudo fec64a: OUTPUT«1300-03-01␤»
masak the Gregorian calendar is as near to an international date standard as we have.
and yes, Date works with infix:<...> because (a) it's immutable, and (b) it has .succ 11:42
r: say Date.today.delta(Date.today.days-in-month - Date.today.day, day) 11:43
p6eval rakudo fec64a: OUTPUT«2013-03-31␤»
sorear r is using gregorian dates for days before Pope Gregory IX was even born
XIII
masak r: say .delta(.days-in-month - .day, day) given Date.today
p6eval rakudo fec64a: OUTPUT«2013-03-31␤»
masak sorear: sure. it's called "proleptic Gregorian calendar". 11:44
it's a thing.
I don't think "being universal" means "not being opinionated" or "not betting on widespread standards". 11:52
colomon rn: grammar A { token a { "a"+ } }; say A.parse("ab");
p6eval niecza v24-28-g2a7e0fd: OUTPUT«Unhandled exception: Unable to resolve method TOP in type A␤ at /home/p6eval/niecza/lib/CORE.setting line 2965 (Grammar.parse @ 5) ␤ at /tmp/LONVrZ8JHz line 1 (mainline @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4274 (ANON @ 3) ␤ at /home/p6ev…
..rakudo fec64a: OUTPUT«No such method 'TOP' for invocant of type 'A'␤ in method parse at src/gen/CORE.setting:10788␤ in block at /tmp/p8ndci5_uh:1␤␤»
masak Swatch Internet Time is a pretty neat standard with some distinct advantages. it's just that no-one uses it.
colomon rn: grammar A { token a { "a"+ } }; say A.parse("ab", :rule<a>); 11:53
p6eval rakudo fec64a: OUTPUT«「a」␤␤»
..niecza v24-28-g2a7e0fd: OUTPUT«#<failed match>␤»
colomon is there any easy way to get Rakudo's parse to fail if the entire source string does not match?
sorear add ^ and $ 11:54
pretty sure rakudo's behavior is to spec; I just really don't like that part of the spec
colomon sorear: but that involves changing the grammar, yes?
sorear now that I'm not involved feel free to make things consistent
11:55 ozmq left
colomon sorear: the problem here is that I really need Niecza's behavior 11:55
sorear n: grammar A { token a { "a"+ } }; say "ab" ~~ / ^ [ :lang(A) <TOP> ] $ /
11:55 rindolf left
p6eval niecza v24-28-g2a7e0fd: OUTPUT«Unhandled exception: Unable to resolve method TOP in type A␤ at /tmp/UqjypqYKzw line 1 (ANON @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2957 (Regex.ACCEPTS @ 10) ␤ at /tmp/UqjypqYKzw line 1 (mainline @ 5) ␤ at /home/p6eval/niecza/lib/CORE.sett… 11:55
sorear n: grammar A { token a { "a"+ } }; say "ab" ~~ / ^ [ :lang(A) <a> ] $ /
p6eval niecza v24-28-g2a7e0fd: OUTPUT«#<failed match>␤»
masak I'm not so sure about "to spec". ISTR there being different opinions about whether ^ .. $ should be implied or not. and if so, which part should magically imply it.
sorear r: grammar A { token a { "a"+ } }; say "ab" ~~ / ^ [ :lang(A) <a> ] $ /
p6eval rakudo fec64a: OUTPUT«===SORRY!===␤Unrecognized regex modifier :lang␤at /tmp/XGRXburMhI:1␤------> en a { "a"+ } }; say "ab" ~~ / ^ [ :lang⏏(A) <a> ] $ /␤»
sorear bah
11:55 rindolf joined
sorear sleep& 11:56
colomon there's a parsefile method?!!
masak yeah. 11:57
for those who are too lazy to do .parse($file.slurp) ;)
walk &
colomon is quite possibly too lazy to do .parse($file.slurp)
colomon is also not seeing anything in the spec which suggests to him that Rakudo's behavior is in the spec 11:58
sorear well, one of the things I was going to do with niecza before I lost interest was add the capability to parse files *without* reading the whole thing 11:59
there's no reason in principle why GState has to point to a string, and not, say, a small portion of the data + a function for getting other parts on demand 12:00
could even be non-character data at that point
and we can discard segments in response to <cut> 12:01
colomon which would also allow you to parse Cats, right?
sorear would also be very important for <.moreinput>
12:01 sqirrel joined
sorear sleep for real& 12:01
colomon night 12:03
12:09 shinobicl joined 12:22 SmokeMachine joined
colomon rn: grammar A { token a { "a"+ } }; say A.parse("bab", :rule<a>); 12:28
p6eval rakudo fec64a, niecza v24-28-g2a7e0fd: OUTPUT«#<failed match>␤»
FROGGS rn: grammar A { token a { "a"+ } }; say "ab" ~~ A.parse("ab", :rule<a>); 12:31
p6eval niecza v24-28-g2a7e0fd: OUTPUT«False␤»
..rakudo fec64a: OUTPUT«「a」␤␤»
FROGGS rn: grammar A { token a { "a"+ } }; say "ab" ~~ ~A.parse("ab", :rule<a>);
p6eval rakudo fec64a, niecza v24-28-g2a7e0fd: OUTPUT«False␤»
12:38 sizz_ joined, sizz left 12:48 cognominal left 12:54 rindolf left 12:55 cognominal joined 12:57 kaleem left 13:01 kaleem joined
colomon loliblogged: justrakudoit.wordpress.com/2013/03/...dos-parse/ 13:04
13:08 cognominal left
FROGGS colomon: what if you have a rule TOP { ^ <something> $ } ? will <[^$]> be ignored when doing all(0) ?, what if in TOP is only one of <[^$]> ? 13:10
I think the best would be to inherit from the grammar you can't/won't modify, and overwrite TOP 13:11
colomon parse already does ^ by default on both Rakudo and Niecza.
and TOP is sort of the least interesting case 13:12
13:13 SmokeMachine left 13:14 SmokeMachine joined
masak colomon++ # blag 13:16
colomon: IMNSHO, .parse (and .parsefile) should auto-anchor the ends of the string. 13:19
colomon hopes that's Humble and not Honest. ;)
masak yeah :)
colomon: what I *don't* know is whether it should be that way becuase (a) .parse contains some magic or (b) TOP contains some magic.
and honestly/humbly, I can't say I see the repercussions of it.
but hey, that's what the spectest suite is for, neh? :) 13:20
colomon masak: the thing is, as often as not I'm not parsing against TOP
and I still always want auto-anchoring
13:21 SamuraiJack left
colomon is not sure if he has ever used TOP, actually. 13:23
13:24 jaldhar_ left
colomon For instance, the ABC grammar has two rules that abc2ly parses against: tune_file (which would be TOP if I had TOP, I guess) and key. It would also be very reasonable to parse against tune. 13:27
And for testing purposes I directly parse against many of the rules. 13:28
[Coke] (maze.png) gah, my brain is looking for the hidden 3d picture. 13:30
dalek kudo/nom: 90bd93d | pmichaud++ | src/core/Rat.pm:
A better factoring of Rat.perl.
13:32
masak colomon: then I suggest the default of .parse be "anchor both ends of string", no matter what :rule. and there should be a :substr (modulo name bikeshedding) option. 13:36
colomon masak: That would be my preference as well. (:partial maybe?) 13:37
masak yeah, I was sniffing around in the vicinity of :part, too. 13:38
:anywhere
:unanchored 13:39
13:41 simcop2387 left 13:42 simcop2387 joined, simcop2387 left, simcop2387 joined
nwc10 stealth Pm at work 13:44
masak is a "stealth Pm" like a hidden prime minister? 13:46
13:48 ObseLeTe joined
pmichaud I think that the default of .parse is currently "anchor one end of string", since that's what normally happens with a subrule match. 13:49
good morning, #perl6
oops, have to take $kid to $school. bbiab
masak .oO( have to anchor one end of $kid to $school ) 13:52
with grammar G { regex TOP { 'ab' } }; who expects G.parse("abc") to fail, and who expects it to succeed? 13:53
rn: grammar G { regex TOP { 'ab' } }; say so G.parse("abc") 13:54
p6eval niecza v24-28-g2a7e0fd: OUTPUT«False␤»
..rakudo fec64a: OUTPUT«True␤»
masak :)
masak , fwiw, is with Niecza
*this*, gals and bots, is why we have implementation*s*, plural ;) 13:55
it's healthy.
arnsholt I'd agree with .parse requiring a match from 0 to the end of the input
masak submits rakuodbug 13:56
13:57 kaleem left, Liz joined, kaleem joined, Liz is now known as Guest8042 14:00 Gwyxx left 14:07 cognominal joined 14:08 FROGGS left
pmichaud leading-edge anchoring for .parse is typically controlled by the :c and :p options 14:10
r: grammar G { regex TOP { 'abc' } }; say so G.parse('bc'); 14:11
p6eval rakudo fec64a: OUTPUT«False␤»
pmichaud r: grammar G { regex TOP { 'abc' } }; say so G.parse('bc', :c(0));
p6eval rakudo fec64a: OUTPUT«False␤»
pmichaud hmmmm
r: grammar G { regex TOP { 'abc' } }; say so G.parse('bc', :continue(0));
p6eval rakudo fec64a: OUTPUT«too many named arguments: 1 passed, 0 used␤ in any !cursor_init at src/stage2/QRegex.nqp:560␤ in method parse at src/gen/CORE.setting:10788␤ in block at /tmp/1p7EGkkfML:1␤␤»
colomon r: grammar G { regex TOP { 'abc' } }; say so G.parse('bc', :c(1)); 14:12
p6eval rakudo 90bd93: OUTPUT«False␤»
pmichaud maybe nyi?
14:13 kaleem left
colomon is it spec'd? 14:13
14:13 kaleem joined
pmichaud The :c and :p modifiers are spec'd, yes. 14:13
r: grammar G { regex TOP { 'abc' } }; say so G.parse('bc', :p(1)); 14:14
p6eval rakudo 90bd93: OUTPUT«False␤»
colomon I mean for parse, particularly.
pmichaud I *know* that worked at one time.
masak I've never seen them in connection with .parse
pmichaud r: grammar G { regex TOP { 'abc' } }; say so G.parse('bc', :pos(1));
p6eval rakudo 90bd93: OUTPUT«too many named arguments: 1 passed, 0 used␤ in any !cursor_init at src/stage2/QRegex.nqp:560␤ in method parse at src/gen/CORE.setting:10786␤ in block at /tmp/AHeA4xxQpZ:1␤␤»
masak I know they're there for m//
pmichaud r: say 'abc' ~~ m:p(1)/bc/; 14:15
p6eval rakudo 90bd93: OUTPUT«「bc」␤␤»
pmichaud r: say 'abc' ~~ m:p(0)/bc/;
p6eval rakudo 90bd93: OUTPUT«#<failed match>␤»
pmichaud r: say 'abc' ~~ m:c(0)/bc/;
p6eval rakudo 90bd93: OUTPUT«「bc」␤␤»
pmichaud method !cursor_init($orig, :$p = 0, :$c, :$shared) {
So, cursor_init knows about :p and :c
and .parse just calls cursor_init, passing along any options 14:16
self."!cursor_init"($target, |%opt)."$rule"().MATCH;
colomon there are no spectests for :c or :p on parse
pmichaud anyway, I think .parse should continue to act like a subrule match; defaulting to "anchor at pos 0". We could have an option that requires the end anchor also. (more) 14:18
note that smartmatching against a regex/token/rule is supposed to automatically match both ends. 14:20
thus $string ~~ regex { \d+ } anchors while $string ~~ /\d+/ does not anchor. 14:22
(nyi in rakudo, I think, but spec'd)
14:22 PacoAir joined
colomon pmichaud: I'm not trying to say that both forms are not useful. Just that it feels like the wrong default has been chosen for parse and parsefile. 14:25
14:25 Patterner left
pmichaud r: grammar G { regex TOP { 'abc' } }; say G.parse('bc') 14:26
colomon imagine trying to explain to a user that we have MyGrammar.parsefile, but if you actually want to parse the entire file, you need to say $file.slurp ~~ MyGrammar.
p6eval rakudo 90bd93: OUTPUT«#<failed match>␤»
pmichaud .parse already anchors to the beginning by default
colomon of course, MyGrammar.parsefile(:all) wouldn't be too bad 14:27
14:27 Psyche^ joined, Psyche^ is now known as Patterner
pmichaud please, no. since we already have :c and :p, I think we should have an orthogonal option for end-anchoring. 14:28
14:28 Guest8042 is now known as lizmat
pmichaud don't add another option to control anchor-at-the-beginning 14:28
r: grammar G { regex TOP { 'abc' } }; say G.parse('abcdef')
p6eval rakudo 90bd93: OUTPUT«「abc」␤␤»
colomon not trying to control anchor-at-the-beginning, I'm worried about anchor-at-the-end 14:29
pmichaud right, I understand that. I'm just saying we already have anchor-at-beginning controls, don't muck with them too much. 14:30
the current .parse default most closely resembles what happens on a subrule match
colomon as implemented in rakudo -- not as spec'd in any way that I can see 14:31
pmichaud well, also as discussed on #perl6 over many years :)
masak yeah. this comes up now and again. 14:34
I remember thinking about it while walking the streets of Lisbon ;)
arnsholt What does parse(:c) specify?
Looking at the code in NQP I'm not entirely sure 14:35
masak continue from last match position?
last :to position, even.
arnsholt Ah, right
pmichaud no 14:36
:c(3) means "scan starting at position 3"
masak and :p means? 14:37
pmichaud :p(3) means "scan anchored at position 3"
er, "match anchored at position 3"
14:37 skids joined
arnsholt Right, right. That makes sense 14:37
masak ah, so :c means "it's ok to match :from something later in the string", while :p means "try only this :from"? 14:38
pmichaud r: say 'abcdabcd' ~~ m:c(2)/a.*/
p6eval rakudo 90bd93: OUTPUT«「abcd」␤␤»
pmichaud r: say 'abcdabcd' ~~ m:c(0)/a.*/
p6eval rakudo 90bd93: OUTPUT«「abcdabcd」␤␤»
arnsholt A similar option to force anchoring to the end of the string (and optionally some other offset would make sense, I guess) would make me just as happy as .parse always matching to end
pmichaud r: say 'abcdabcd' ~~ m:p(2)/a.*/
p6eval rakudo 90bd93: OUTPUT«#<failed match>␤»
arnsholt In fact, given :c/:p it makes more sense to add such an option than changing how .parse should work
pmichaud S05:287 14:39
masak clearly if :p forces anchoring of the beginning of the regex, the option that forces anchoring at the end should be... :q
:)
14:40 dayangkun left
pmichaud note that :p forces anchoring at a position. 14:40
:p(0) forces anchoring at the beginning.
colomon :q(0) ?
hugme hugs colomon, good vi(m) user!
masak hugme: hush, grownups are talking :)
colomon is sooooo not a good vi(m) user
skids masak++ but why not :d ?
masak skids: because the string flips, it doesn't rotate. 14:41
pmichaud I suspect that :p would be the same as :p(1).
masak pmichaud: I guess :q could take a position too, but I don't really see a strong use case.
14:41 bluescreen10 joined
pmichaud masak: yeah, I see that it's not entirely orthogonal there. 14:41
masak "strangely consistent" often implies "not entirely orthogonal". 14:42
14:42 lizmat left
pmichaud in some sense I think that by trying to modify .parse we may be looking at the problem wrong. 14:42
skids masak: I guess that depends on whether you read left to right or top to bottom :-)
masak skids: if you read vertically, it's more like :℺ :) 14:44
colomon rn: my @a; say @a.perl 14:48
p6eval niecza v24-28-g2a7e0fd: OUTPUT«[].list␤»
..rakudo 90bd93: OUTPUT«Array.new()␤»
colomon rn: my @a; sub blue(@a) { say @a.perl; }; blue(@a)
p6eval niecza v24-28-g2a7e0fd: OUTPUT«[].list␤»
..rakudo 90bd93: OUTPUT«Array.new()␤»
colomon rn: say $*EXECUTABLE_NAME 14:52
p6eval niecza v24-28-g2a7e0fd: OUTPUT«/home/p6eval/niecza/run/Niecza.exe␤»
..rakudo 90bd93: OUTPUT«./nom-inst/bin/perl6␤»
pmichaud okay, thinking about it a bit more.... 14:53
to me, ".parse" implies "do what one would do for parsing", which would be to match as much as possible but don't fail outright if we don't reach the end of the string. 14:54
matching an entire string would be some form of .match
colomon why? 14:55
pmichaud because it fails to match exactly
colomon or it fails to parse exactly
pmichaud look throughout the spec, and it's very rare that we use the word "parse" to mean "match the entire thing"
or, more to the point, "be sure to reach the end of the string" 14:56
the only place we do explicit end-anchoring is when doing smart*matching* 14:57
s/explicit/implicit/ 14:58
when we say "parse an expression", we generally mean "match as much of the string as follows the expression pattern" 14:59
masak train &
14:59 FROGGS joined
pmichaud I fully agree we need a good way to mean "match a subrule with implicit end-anchor"... I'm just not sure what it is, nor that it should be the default for .parse 15:00
15:02 kaleem left
dalek p: 783e7b8 | (Arne Skjærholt)++ | src/6model/reprs/VMArray.c:
Implement bind_pos_boxed in VMArray.
15:02
p: 8d7829f | (Arne Skjærholt)++ | src/6model/reprs/VMArray.c:
Implement bind_pos_native and at_pos_native in VMArray.
FROGGS is hacking, the son is dancing to FROGGS's favourite music and the sun is shining 15:08
life can be good
hoelzro =) 15:09
dalek ecza: 4aabeb2 | (Solomon Foster)++ | lib/CORE.setting:
Restore previous infix:<cmp> sorting on different types.
15:11
15:16 wk left 15:19 kaare__ joined 15:21 ObseLeTe left 15:26 thou joined 15:38 jeffreykegler joined
PerlJam < pmichaud> I suspect that :p would be the same as :p(1). 15:38
that would be surprising.
(to me anyway)
jeffreykegler I hope the channel won't mind a comment from an outsider re the meaing of "parse" 15:40
PerlJam jeffreykegler: you're hardly an "outsider" (at least IMNSHO)
jeffreykegler In olden days we used to strictly distiguish parsing from lexing
I hasten to add language evolves and I am not saying the expanded usage is wrong 15:41
FROGGS nr: sub a ( :$p ) { say $p }; a( :p )
p6eval rakudo 90bd93, niecza v24-28-g2a7e0fd: OUTPUT«True␤»
jeffreykegler But "parse" in the old sense meant apply a structure, and to an entire string, as per its basis in language theory 15:42
15:42 Targen joined
dalek ast: bf130cd | (Solomon Foster)++ | S03-operators/assign.t:
Fix new tests to not rely on particular Rakudo semantics.
15:42
jeffreykegler Regular expressions think in terms of partial strings, and for them parsing the entire string is a special case: anchoring 15:43
For a "parser" in ye olde sense, insisting that the entire string be in the language was very much standard ...
... and a "partial parse" was in the strict sense a failure 15:44
pmichaud PerlJam: okay, :p would be the same as :p(True) 15:45
rn: say :p
p6eval niecza v24-28-g2a7e0fd: OUTPUT«Unhandled exception: Excess arguments to gistcat, unused named p␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (gistcat @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1341 (say @ 7) ␤ at /tmp/yzl6qKQcUp line 1 (mainline @ 3) ␤ at /home/p6eval/ni…
..rakudo 90bd93: OUTPUT«␤»
pmichaud rn: say (:p)
p6eval rakudo 90bd93, niecza v24-28-g2a7e0fd: OUTPUT«"p" => Bool::True␤»
pmichaud rn: say +(:p)
p6eval niecza v24-28-g2a7e0fd: OUTPUT«Unhandled exception: Cannot use value like Pair as a number␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 293 (Any.Numeric @ 6) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /tmp/mGd48BVrCc line 1 (mainline @ 3) ␤…
..rakudo 90bd93: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \v: Mu *%_)␤␤ in method Numeric at src/gen/CORE.setting:865␤ in sub prefix:<+> at src/gen/CORE.setting:2693␤ in block at /tmp/utcFcaba8q:1␤␤»
15:50 cognominal left
PerlJam jeffreykegler: so ... you would advocate .parse have implicit anchors for beginning and end of string? What would then do partial parsing? Would you call it .lex or something else? :-) 15:50
pmichaud jeffreykegler: you're correct on the olden usage of parse; which is why I looked at how we tend to use "parse" in the synopses. 15:51
FROGGS PerlJam: fwiw: I'd like to have implicit anchors for .parse too
jeffreykegler Perljam: yes
My own perspective comes from having spent years work on the problem of parsing in the strict sense, assuming a prior lexer phase 15:52
FROGGS if I'd be satisfied with getting just a part then I would *match* it, dunno if this is the best term
jeffreykegler If you define parsing as lexing, the problem I was working on was defined out of existence, 1984-style 15:53
Again, I acknowledge that language evolves and don't assert other uses of the work "parsing" are wrong 15:54
pmichaud I suspect this is one of those decisions that TimToady will end up resolving. :)
I suspect this is one of those decisions that TimToady++ will end up resolving. :)
jeffreykegler * work -> word
pmichaud (sorry for double-paste there... didn't switch out of "editor" mode back into "irc" mode :) 15:55
dalek rl6-roast-data: b89079c | coke++ | / (3 files):
today (automated commit)
15:56
15:56 isomorphisms left
jeffreykegler Re how'd you handle partial parsing as special case, I deal with the issue in Marpa, but don't know enough about Perl 6 to comment 15:57
[Coke] niecza down to 164 failures from 203 (but that was almost a day ago)
pmichaud "partial parsing" isn't really a "special case" in Perl 6, though. Or in Perl 5, either -- partial parsing tends to be the default case.
jeffreykegler pmichaud: you are right about Perl 5, and I have to assume you're right about Perl 6 as well 15:58
pmichaud the classical language theory meaning of "parse" is more akin to a purely declarative/functional language form, as opposed to the mixed declarative/procedural form that Perl 6 tends to use :) 16:00
jeffreykegler In the Perl 5 case, "parsing" == "lexing", which is how the terms have evolved, and Perl probably played a big role in that evolution 16:01
16:03 bluescreen10 left, bluescreen100 joined
jeffreykegler pmichaud: I want to emphasize I am not insisting the newer meaning is wrong, but I think you can see how if you are trying to talk about parsing (in ye olde strict sense) to someone for whom "parse" and "lex" are synonyms -- well, it's hard 16:03
pmichaud jeffreykegler: understood, and agreed. 16:04
jeffreykegler pmichaud: Perl 6 will do what it has to do consistent with its traditions, and I will live with that 16:05
pmichaud I think we're trying to ferret out the true Perl 6 meaning, and it's one of those areas where TimToady++ (the linguist) will have to make the call :)
we currently have a bit of messiness in the way we use "parsing", "matching", and "anchoring", and it may want some tidying up.
I only hope this version of "tidy up" doesn't lead to large spec changes... :) :) 16:06
PerlJam if "partial parsing" is the norm, then maybe .parse() and .match() should be unified. 16:09
pmichaud PerlJam: perhaps, although they're slightly different. "str".match(regex) versuse Grammar.parse
Grammar.parse("str")
in some sense .match is the misnomer here, too, as "match" puns a bit with "smart matching" 16:10
[Coke] pmichaud: I can't believe you'd poke TimToady with a stick when he's near the spec. That way lies madness. 16:11
dalek kudo-js: 921d2a7 | (Pawel Murias)++ | runtime/serialization.js:
Remove obsolete comment.
kudo-js: 44e9dea | (Pawel Murias)++ | runtime/serialization.js:
Reorder code and add docs to BinaryCursor methods.
pmichaud [Coke]: yes, I know, but I've been somewhat resigned to it :) 16:12
PerlJam "str".match(Grammar) doesn't seem like too much of a stretch and then the difference between "str".match(Grammar) and Grammar.parse("str") is about who controls the execution, either the string or the grammar.
TimToady has already been poked with to many sticks a couple weeks ago... :)
*too
PerlJam I guess .match() still allows for study()-like things to happen, but that could be a modifier on .parse() too 16:13
pmichaud ISTR that there was a time that ".match" acted much like ".parse" (including having the :rule and :action arguments), and then it was decided they needed to be split. But I could be very much mistaken on that memory.
anyway, for all my comments, I don't feel I have a strongly held opinion, I'm fine with whatever the result ends up being. 16:14
I'll just have to adjust my mental model a bit again.
16:31 hoelzro is now known as hoelzro|away 16:32 benabik left 16:34 census joined 16:35 gdey joined
TimToady sorear: re Gregorian calendar, the 'P' still stands for Practical 16:35
speaking of which, anyone want to work on date parsing?
16:36 SunilJoshi joined
TimToady rosettacode.org/wiki/Date_manipulation is kinda waiting on it 16:36
pmichaud date parsing sounds like fun 16:46
I probably won't have tuits for it, though :-/
TimToady btw, the main motivation for parsefile is not laziness, but error messages containing the current filename 16:48
16:49 salv0 left 16:53 salv0 joined, Chillance joined
dalek kudo/nom: 11157e9 | pmichaud++ | src/core/Rat.pm:
Rat.perl should provide angle brackets around fractional forms.
16:55
ast: 3f50980 | pmichaud++ | / (3 files):
Unfudge now-passing TODO tests after more Rat.perl changes.
pmichaud moritz: We can fix S32-num/stringify.t after making fixes to Rational.Str
nr: say (1/(2**7)).Str # both rakudo and niecza get this wrong 16:56
p6eval rakudo 90bd93, niecza v24-30-g4aabeb2: OUTPUT«0.007813␤» 16:57
16:57 LlamaRider joined
pmichaud masak: ^^^ 16:57
16:57 LlamaRider left
TimToady nr: say 1/128 16:58
p6eval rakudo 90bd93, niecza v24-30-g4aabeb2: OUTPUT«0.007813␤»
TimToady er, how is it wrong?
pmichaud should be 0.0078125
TimToady ah
pmichaud rakudo doesn't check for a number to be representable as a decimal
dalek kudo-js: 92a08dc | (Pawel Murias)++ | runtime/serialization.js:
Refactor readHeader into BinaryCursor.header
kudo-js: 8efe3df | (Pawel Murias)++ | runtime/serialization.js:
Refactor more functions into BinaryCursor methods.
pmichaud (I suspect niecza does similar)
so it goes ahead and rounds instead of continuing out to the full decimal representation 16:59
TimToady I think I wrongly asserted to colomon++ that my algorithm would get that right :)
pmichaud the test that exposes things is
say (4.5**60).perl
rn: say (4.5**60).perl 17:00
p6eval rakudo 90bd93: OUTPUT«1558657976916843360832062017400788597510.05883495394563551060␤»
..niecza v24-30-g4aabeb2: OUTPUT«1558657976916843360832062017400788597510.058834953945635510598466400011830046423710882663726806640625␤»
pmichaud Rakudo sends this to Rational.Str, which does the incorrect rounding. Niecza++ gets this one right.
17:00 LlamaRider joined
pmichaud however, niecza doesn't get 17:00
rn: say (1/(2**60)).perl
p6eval rakudo 90bd93: OUTPUT«0.00000000000000000087␤»
..niecza v24-30-g4aabeb2: OUTPUT«0.000000000000000000867361737988403547205962240695953369140625␤»
17:00 LlamaRider left
pmichaud oh, hmm, it does get that one. 17:00
TimToady probably because there is a big enough denominator for my algo 17:01
but it's just scaling it by size, not by 2's and 5's
pmichaud yeah, Rakudo's new Rat.perl is checking for 2's and 5's
but .Str isn't doing that
anyway, nieczabug and rakudobug :) 17:02
17:02 neilb_ left
pmichaud nr: say (1/65536).Str 17:02
p6eval rakudo 90bd93, niecza v24-30-g4aabeb2: OUTPUT«0.000015␤»
masak submits pmichaud's rakudobug
17:02 donaldh left
pmichaud have to go do errands... bbiaw 17:03
TimToady wonders if it might be more efficient to wait until we run out of digits with the current algo and then check the remaining number for 2's and 5's, since it's likely to be be smaller than the original number
17:03 dreamweaver joined, dreamweaver left 17:04 LlamaRider joined 17:06 SamuraiJack joined 17:07 daxim left
jnthn evening o/ 17:07
masak jnthn! \o/ 17:08
17:20 cognominal joined
dalek ecza: 7d73dd1 | larry++ | lib/CORE.setting:
Extend Rat.Str to emit exact decimal when possible.
17:23
TimToady jnthn: you'll like that one for style points :)
FROGGS hehe
TimToady++ 17:24
TimToady evalbot rebuild niecza
p6eval OK (started asynchronously)
jnthn :D
pmichaud that looks a lot like the solution I drafted, but I was trying to make a private method so it could be reused in both Rat.perl and Rational.Str
really gone
TimToady n: say 1/128 17:25
p6eval niecza v24-31-g7d73dd1: OUTPUT«0.0078125␤»
TimToady n: say 1/65536
p6eval niecza v24-31-g7d73dd1: OUTPUT«0.0000152587890625␤»
TimToady n: say <1/65536>.Str
p6eval niecza v24-31-g7d73dd1: OUTPUT«0.0000152587890625␤» 17:26
TimToady (just checking)
would be nice to find a way to optimize $den /= 5 if $den %% 5 to avoid double division 17:32
17:32 jeffreykegler left, SunilJoshi left
masak pmichaud: let me politely disagree that "parse an expression" means "match as much of the string as follows the expression pattern". 17:35
pmichaud: if I have a string starting with something matched by a grammar, followed by some garbage, I want the garbage to cause a failure. whether I then add the :part/:start option, I will be thankful the defaults caught the garbage for me. 17:36
rn: grammar Formula { method TOP { \d '+' \d } }; say ?Formula.parse("1+7and I am a martian banana spiced with freshly mowed grass") 17:38
p6eval niecza v24-31-g7d73dd1: OUTPUT«===SORRY!===␤␤Two terms in a row at /tmp/koIrTo1_99 line 1:␤------> grammar Formula { method TOP { \d '+' ⏏\d } }; say ?Formula.parse("1+7and I am ␤␤Undeclared routine:␤ 'd' used at line 1␤␤Parse failed␤␤»…
..rakudo 11157e: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/rR_KOezO_h:1␤------> grammar Formula { method TOP { \d '+' ⏏\d } }; say ?Formula.parse("1+7and I am ␤ expecting any of:␤ postfix␤ infix or meta-infix␤ infix stopper…
17:38 jeffreykegler joined
masak oops. 17:38
rn: grammar Formula { regex TOP { \d '+' \d } }; say ?Formula.parse("1+7and I am a martian banana spiced with freshly mowed grass")
p6eval niecza v24-31-g7d73dd1: OUTPUT«False␤»
..rakudo 11157e: OUTPUT«True␤»
jnthn That was some garbage :P
TimToady well, people have been "parsing" since middle english (the term predates CS by centuries, anyway), and pragmatically speaking we do it on continuous input all the time 17:39
which is why people are allowed to add to sentences
like this one
masak well, look what we did with numbers. 17:40
rn: +"42martian banana"
p6eval rakudo 11157e: OUTPUT«Cannot convert string to number: trailing characters after number in '42⏏martian banana' (indicated by ⏏)␤current instr.: 'throw' pc 333965 (src/gen/CORE.setting.pir:149807) (src/gen/CORE.setting:9298)␤called from Sub 'sink' pc 365862 (src/gen/CORE.setting.pir:1625…
..niecza v24-31-g7d73dd1: OUTPUT«Unhandled exception: Cannot parse number: 42martian banana␤ at /home/p6eval/niecza/lib/CORE.setting line 1489 (die @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3605 (ANON @ 10) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3607 (NumSyntax.str2nu…
masak it's another instance of the same issue. 17:41
TimToady I'm not saying we shouldn't have a way to anchor a parse easily, but claiming "parse" has always meant that isn't gonna stick :)
masak the conversion fails, not because there wasn't a proper number there to be parsed, but because there was garbage. 17:42
TimToady sure, but +'s mandate is to parse the whole thing
diakopter gigo
masak places the consistency card on the table :)
TimToady whereas grammars are supposed to be slightly composable
masak TimToady: I argue Least Surprise is "parse the whole thing, or fail". 17:43
TimToady I'm not even arguing against that
masak colomon's blog post is one big, real-world example of that.
TimToady one solution is to just provide a subparse method
well, I'm not sure that isn't just a bug in the grammar... 17:44
masak oh, ok.
TimToady don't have the whole grammar in the article, but it probably shouldn't be backtracking somewhere anyway, if you want to know the high water 17:45
17:45 am0c joined
TimToady anyway, I'm much more into grammars that have a lot of || <.panic: Good error message> 17:45
jnthn TimToady: Have you considered spec'ing a way to get at the highwater, ooc? 17:46
TimToady it's not clear how much of that can be intuited by the failure of an entire grammar
17:46 fgomez left
jnthn TimToady: Though...I don't do it by the contextual and don't want to for performance reasons... 17:46
So don't spec it that way :P
Just thinking it's useful information to have when reporting an error 17:47
TimToady maybe we could have a <hw> thingy you can put in various places
masak ooh 17:48
TimToady or maybe we could have a cockpit record of some sort for commits
17:50 cognominal left
moritz masak: I've just quoted your law of unintended consequences in a $work conversation :-) 17:55
TimToady jnthn: if contextuals make algorithms slow, then we need to fix contextuals to cache better locally 17:57
17:59 ObseLeTe joined, wk joined, cognominal joined, fgomez joined 18:00 rindolf joined 18:05 fgomez left
moritz r: say eval( (1.2).perl ).WHAT 18:05
p6eval rakudo 11157e: OUTPUT«(Rat)␤»
TimToady r: say eval 1.2.WHAT 18:06
p6eval rakudo 11157e: OUTPUT«Cannot call 'eval'; none of these signatures match:␤:(Str $code, :lang(:$lang) = { ... }, PseudoStash :context(:$context))␤␤ in block at /tmp/7AAcpiGZaE:1␤␤»
TimToady r: say eval 1.2.WHAT.name
p6eval rakudo 11157e: OUTPUT«No such method 'name' for invocant of type 'Rat'␤ in block at /tmp/sM4hIw9AWU:1␤␤»
TimToady r: say eval 1.2.WHAT.gist 18:07
p6eval rakudo 11157e: OUTPUT«(Rat)␤»
18:07 cognominal left, Liz joined
TimToady :) 18:07
r: say eval ~1.2.WHAT
p6eval rakudo 11157e: OUTPUT«use of uninitialized value of type Rat in string context in block at /tmp/aCnisA1Soi:1␤␤Nil␤»
18:07 Liz is now known as Guest86894
TimToady right 18:07
18:07 Guest86894 is now known as lizmat
moritz TimToady: have you seen my questions about Nil in the backlog? 18:08
TimToady I answered some of 'em
moritz ok, great
moritz backlogs
18:08 dakkar left
moritz still quite a few questions to go :-) 18:11
18:12 cognominal joined
TimToady Oh, missed one. Nil is distinguished from Failure in not throwing an exception in sink context 18:13
as well as not having a payload
18:16 lichtkind_ joined
moritz is Nil still some kind of () ? 18:18
and there was the one about whether Nil.Str actually fails or warns
18:19 lichtkind left
moritz (or does both :-) 18:20
TimToady no, Nil is just like () insofar as both represent that there are no values 18:21
but differently
thinking about Nil.Str 18:22
18:22 SamuraiJack left
dalek ecs: 3dd0a22 | larry++ | S03-operators.pod:
Include Failure in smartmatch passthroughs

Only actual failure objects pass through. You can match against Failure as a literal type. Presumably this can be distinguished by Failure.ACCEPTS.
18:24
18:27 benabik joined
jnthn dinner, bbl 18:29
dalek ecs: e89ca67 | larry++ | S02-bits.pod:
Loosen perceived relationship of Nil and ()
18:31 xilo joined
TimToady moritz: I think I still like what the spec says about Nil.Str. One may always change to the other policy application-wide by fatalizing the warning. 18:31
if we default it the other way, people are forced to scatter catches all over, it seems to me 18:32
[Coke] ZOMG did I see a timtoady implementation commit? 18:33
TimToady and trying to resume a normal exception just seems dicier than fatalizing a warning
my cat would rather starve than eat her food with the medicine mixed in, sigh... 18:35
so much for subterfuge
now she'll just hate me for the rest of her and/or my life for forcing it down her throat... 18:36
maybe programmers are too much like cats... 18:37
[Coke] vomits on TimToady's carpet. 18:40
geekosaur cats can be patient, though... 18:41
18:45 am0c left
TimToady trouble is, it takes about 3 hands to wrap an unwilling cat into a towel, and I don't have quite that many... 18:47
a gripping hand would be perfect for kitty 18:48
dalek rl6-roast-data: 3d5b057 | coke++ | / (4 files):
today (automated commit)
18:50
18:54 banisterfiend joined
banisterfiend this made me lol otierney.net/images/perl6.gif (sry:P) 18:55
moritz "Nil.Numeric likewise fails with resumable warning that returns 0 on resumption." 18:58
that sounds like
method Numeric { warn "Used Nil in numeric context"; fail 0; } # or so
which seems like overkill
(for me "fails" means "return a Failure object", and "with a warning" means warn(). Combining both seems... overwarnkill) 18:59
same with .Str
19:00 tokuhiro_ joined, fgomez joined
dalek ecs: 6bb5a41 | larry++ | S02-bits.pod:
don't say "fails" unless you mean it
19:05
rlito: a78d702 | (Flavio S. Glock)++ | / (4 files):
Perlito5 - js - move the whole eval() compilation to "perl5-land"
19:06
19:06 benabik left 19:09 supernovus joined
supernovus ping masak 19:09
19:14 benabik joined
supernovus phenny: tell masak I'd like to discuss with him a complete overhaul of the "Web" project. 19:15
phenny supernovus: I'll pass that on when masak is around.
19:16 jeffreykegler left 19:19 sqirrel left
banisterfiend supernovus: isn't part of the problem with perl6 (and the reason it's vaporware) is everyone keeps trying to "overhaul" everything all the time? 19:19
19:19 zby_home joined
TimToady kinda surprising for vaporware to have more working solutions on rosettacode than Perl 5, dontcha think? 19:22
[Coke] (web) Keep me in mind for that. That's my most likely production use of perl6, web on rakudo on jvm. 19:23
TimToady and the "Web" project isn't exactly Perl 6...
19:25 isomorphisms joined
supernovus banisterfiend: The "Web" project is currently in a state of abandonment, serving as a home to some incompleted incubation projects. In its current form, it is not useful. I have a proposal, to discuss with masak, to make Web useful again, and to make it the de facto starting point for anyone planning to build web applications with Perl 6. 19:26
banisterfiend fair enough
sorry :)
arnsholt banisterfiend: You've been reading too much chromatic ;) 19:27
banisterfiend yeah, that's true
Ulti from having built each release of Rakudo* since it was created its p. obvious the performance and feature set is really progressing every month, not sure how that would fit any sort of vaporware scenario....
TimToady well, it's easy to start using fightin' words just for the fun of it, but we usually try to de-escalate around here...
19:29 xilo left
masak supernovus: pong 19:31
phenny masak: 19:15Z <supernovus> tell masak I'd like to discuss with him a complete overhaul of the "Web" project.
Ulti one day all cpan authors will wake up and simultaneously decide to port their module to Perl6, and in one 24 hour period Perl6 will become "production ready"
supernovus [Coke]: I will certainly keep you in mind. I'm planning to use a refactored version of my WWW::App library set as a starting point, split off all of the incubator projects as separate github projects, and turn over the main Web portion to the perl6 github group for a more open development process.
masak supernovus: sounds interesting. I'm listening.
19:32 isomorphisms left
masak moritz: I should've made the law "...a corresponding WAT, you're just not aware of it yet." 19:33
19:33 census left
supernovus masak: As you may know, WWW::App started out as a way to rebuild the Web::Request and Web::Response libraries, and add some optional candy coating. Now I'm proposing moving them back into the Web namespace, and spinning off each of the current incubator projects as separate projects on Github, and refactoring them to use the new Web "core library". 19:34
masak banisterfiend: no, I don't think that's part of the problem.
supernovus: ooh.
supernovus As everyone elses tuits are current focused elsewhere, I'd be willing to do the body of the work, but as you current own the 'web' project, and likely the many incubator projects within it, the whole "splitting off" part must be done together with you. If you agree with the proposal. 19:35
masak supernovus: I'm no longer sold on the idea of doing everything under one roof. the idea was risky and met with skepticism back then, and nowadays it doesn't even have me to champion it. so "spinning off as separate projects" sounds nice.
19:35 xilo joined
masak supernovus: yes, I agree with the proposal. 19:36
supernovus: but let me also propose that spinnings-off shouldn't be done just because.
they should be done because some rubber-meets-road project is using them.
19:36 jeffreykegler joined, census joined
masak the project I believe would most benefit from being spun off is Hitomi. 19:36
feel free to rename it while you're at it, so jnthn will stop teasing me about the name :P 19:37
supernovus++ 19:38
Ulti lol at google image search for Hitomi 19:39
masak doesn't think he wants to know :)
Ulti thats almost as bad as my machine naming convention
19:40 benabik left
supernovus masak: That was a big part of my idea. Keep each project separate, so users can mix and match the components they want to use. Astaire may be best merged with my own WWW::App::Ballet, which could get a new name. I have to take a closer look at Squerl. I wrote DB::Model::Easy to be a "simple" ORM layer. Ratel and Hitomi would make nice additions to Template6, Flower::TAL, HTML::Template, Plosurin, and Template::Mojo. 19:40
masak oh my :(
yeah, change the name...
Ulti >:3
I love how its not just a girls name, but specifically a smutty girls name 19:41
masak supernovus: I consider Bailador to be a successful web project, filling the vacuum left by Web collapsing. it has its own Request/Response too.
Ulti: no, it means "beautiful", IIRC.
PerlJam supernovus: I think masak is just saying to be sure there's someone who wants to mix-n-match before you start splitting things up :)
tadzik supernovus: I'd love a decent web-base for Bailadancer
Ulti masak yeah but in japanese any word can essentially be a name.. so its like a porn name 19:42
supernovus Well, I could look at merging Bailador's Request/Response with the new Web ones, and refactoring it to use the new version, then dropping Astaire and WWW::App::Ballet entirely.
tadzik well, um, this image search makes me thing that Web.pm could use a better logo on m.p.o ;)
masak Google Translate says it means "pupil".
Ulti why no school girls
PerlJam supernovus++ 19:43
TimToady it also means "body"
that's "pupil" as in eye, by the way, not as in student
Ulti all three of these word meanings combined is bad news
masak supernovus: sounds great.
supernovus If Astaire/WWW::App::Ballet have any features that Bailador doesn't, I could port them over as well.
masak TimToady: yeah. forgot to say that.
Ulti TimToady: ahh ok
masak TimToady: I've never reflected on "pupil" meaning both "part of eye" and "young student". 19:44
tadzik supernovus: I wonder if there's point in having those projects separated
masak join forces, methinks.
19:44 lue joined
tadzik or maybe Bailadancer could just be a different frontend to www-app-ballet 19:44
lue hello o/
tadzik maybe that'd make sense
Ulti homonyms are annoying 19:45
cant we just get rid of them
TimToady their two important 19:46
Ulti only if you like poetry :P
supernovus Hmm, I guess in a refactored form, Ballet could be a "base" for subroutine based Web dispatch, and Bailador a "higher level" framework with all of the bells and whistles.
Ulti or jokes
tadzik supernovus: sounds good 19:47
PerlJam supernovus: perhaps I'm suffering a failure of imagination, but could you distinguish Ballet and Bailador a little more ... what bells and whistles are you talking about? 19:48
masak Ulti: Esperanto is better than most languages at orthogonalizing meanings into different words. I could riff off a dozen examples offhand. but, importantly, it still falls short. language seems to thrive on polysemy.
PerlJam masak: and crazy people. you need lots of crazy people. 19:49
masak PerlJam: Ballet has tight pants. Bailador has a cape and a rose. :P
[Coke] swings a dead cat in #perl6 to satisfy PerlJam's request. 19:50
supernovus PerlJam: I'm not entirely sure yet. Ballet is very much incomplete, it simply does dispatch based on the HTTP Method and URL, and currently doesn't have any support for placeholders or whatnot. I'm not entirely sure there is any need for separate versions, but I'll know better when I "dig in" to the code. :-)
19:50 fhelmberger left 19:53 fgomez left
supernovus Apparently I don't have permission to create new projects under the "perl6" group, does it matter if I create it as my own user then "hand it over" (or perl6 just forks it?) 19:54
masak actually, I don't think any of what we've talked about should be under the perl6 organization. 19:56
sorry, that's part of what I learned when doing Web. 19:57
we need the darwinian aspect of it all, the one that doesn't bless a particualar module or set of modules.
supernovus Okay, then I'll just create it under my own. Is there a way to grant the "perl6" group commit rights to a personal project? Or do I have to just grant user-by-user? 19:58
dvj r: my $a; "$a(?:\"; 19:59
p6eval rakudo 11157e: OUTPUT«===SORRY!===␤Unsupported use of ?: for the conditional operator; in Perl 6 please use ??!!␤at /tmp/9QG_vvM8YM:1␤------> my $a; "$a(?⏏:\";␤»
dvj Is it supposed to interpret ? as a operator?
n: my $a; "$a(?:\"; 20:00
p6eval niecza v24-31-g7d73dd1: OUTPUT«===SORRY!===␤␤Prefix requires an argument at /tmp/ZZs4DZSaqz line 1:␤------> my $a; "$a(?⏏:\";␤␤Parse failed␤␤»
TimToady yes, it is
20:01 FROGGS left, prammer_ is now known as prammer
TimToady it commits to a postcircumfix as soon as it sees the opener 20:01
PerlJam That's a LTA message though.
dvj is ( the opener? 20:02
PerlJam dvj: yes
dvj ok
20:02 fgomez joined
TimToady you could have 5000 lines of code before the ) 20:02
at some point you just have to treat it as code, not as maybe a messed up interpolation 20:03
PerlJam It's too bad we don't have a quoter that disregards postcircumfixes. 20:05
TimToady I'd also point out that our awesomely dwimmy messages tend to result in a WAT at the startup times :)
20:05 xilo left
PerlJam (I mean other than the obvious non-interpolation ones :) 20:06
I suppose the cost of some {} is cheap enough if you really want to juxtapose values from variables and postcircumfixes. 20:08
TimToady well, you just have to always interpolate using qc/ {stuff} /
or ' \qq[$stuff] ' 20:09
nr: my $x = 'stuff'; say 'It\'s \qq[$x] and nonsense.' 20:10
p6eval rakudo 11157e, niecza v24-31-g7d73dd1: OUTPUT«It's stuff and nonsense.␤»
20:15 bapa left 20:16 cognominal left
supernovus So, for incubator projects, Squerl and Hitomi seem like the only ones I could see being used in a real world application (when finished I could use Squerl within DB::Model::Easy instead of its own home-brewed SQL abstraction layer.) Astaire will be replaced by Bailador, and Ratel has a lot of more complete competition in the template department. 20:22
20:23 jeffreykegler left 20:24 cognominal joined 20:30 ObseLeTe left
masak oh right, Squerl. 20:30
I have no idea how I ended up working on that within the Web umbrella. 20:31
it has some nice ideas in it, yes. and quite a number of tests.
20:31 banisterfiend left
lue would like the *CGI modules working again 20:33
supernovus lue: What aspect of CGI are you looking for?
dalek p: 7148fa7 | (Arne Skjærholt)++ | src/6model/reprs/VMArray.c:
Make VMArray's {bind,at}_pos_{native,boxed} respect the body->start parameter.
p: f0816ff | (Arne Skjærholt)++ | src/6model/reprs/VMArray.c:
First implementations of push, pop, shift and unshift for VMArray.

Most of the groundwork is in place now. Next: Fixing the bugs.
masak lue: and how can we talk you out of it? :) 20:34
lue I liked SCGI the best (don't remember why), but the input when I debug-printed it was cut off every time
supernovus Oh, I see, the connector libraries, not the request. I was going to say, Web::Request or better yet, Web::App replaces the need for the old CGI interface. As for SCGI, it should be working again shortly with some bug fixes to Rakudo. 20:35
lue My guess is it read too little because of some socket reading limit I remember hearing about a while back (only return the first 0x100 bytes even if more requested IIRC) 20:36
20:36 jeffreykegler joined
supernovus I will do some testing on SCGI and see if I can get it working with the current Rakudo. Unlike HTTP::Easy, it doesn't depend on the IO::Socket::INET.get() method working. 20:37
20:37 jeffreykegler left 20:42 SmokeMachine left
arnsholt A philosophical question: Is it still yak-shaving when shaving a particular yak turns out to be fun work after all? 20:43
masak yes. 20:45
fun doesn't make yak shaving not yak shaving. rather the reverse, I'd say.
20:47 xilo joined 20:50 xilo left 20:51 lizmat left 20:55 fgomez left
supernovus Any suggestions for a new name for Hitomi? 20:58
tadzik Cutegirl? :> 20:59
will yield better google images search, maybe :P
supernovus Ha! Hitomi yields some interesting results as it is... 21:00
21:00 xilo joined 21:03 fgomez joined
tadzik hmm 21:05
any reason why .prompt cannot be a method on IO?
that'd be nice
I just used that in Quest and was surprised that it doesn't DWIM :)
jnthn tadzik: Trouble is, I think, that prompt involves two handles. 21:06
tadzik oh, it needs both $*IN and ... right
well, I can easily workaround that :)
masak ($*IN & $*OUT).prompt # *evil grin* 21:08
arnsholt jnthn: I think I've imported most of QRPA into VMArray now. Not quite all there yet, but getting close to the point where I can poke it and see what goes boom 21:09
jnthn masak: I...how...what... :P 21:11
I guess this is "everything can be done with Junctions" revenge for "everything can be done with macros" ;)
arnsholt: nice! :) 21:12
21:12 shinobicl left 21:13 census left
masak jnthn: the "everything can be done with Junctions" misunderstanding is doing fine without me exacting any revenge for anything ;) 21:15
21:16 zby_home left
dalek osystem: e353234 | (Timothy Totten)++ | META.list:
Web framework restructuring has begun.
21:17
tadzik drum roll
21:18 LlamaRider_ joined, xilo left
lue r: my $a = [1,2,3]; my $b = $a; say $a === $b; 21:18
p6eval rakudo 11157e: OUTPUT«True␤»
lue Is that right? 21:19
21:19 LlamaRider_ left, LlamaRider left
jnthn Looks right to me. 21:19
21:19 LlamaRider joined, cognominal left
masak lue: yeah, I'd say so. 21:20
lue: the assignment is basically assigning a reference from one variable to another.
21:20 Chillance left
lue OK. Somehow I thought assignment would create an object with a different WHICH value 21:21
21:21 donaldh joined
masak it does if you do '@b = @a', because then you're like pouring values over from one array into another. 21:22
21:22 xilo joined
masak but here you're not creating anything new. 21:22
21:22 spider-mario joined
masak you're just saying "this $b thing? yeah, assign the referent from $a to it, too". 21:22
same with other objects, not just arrays.
r: class Dog {}; my $woof = Dog.new; my $roof = $woof; say $roof === $woof 21:23
p6eval rakudo 11157e: OUTPUT«True␤»
masak note; only one Dog.new
so it basically has to be the same reference.
similarly, you have only one [] 21:24
(but the whole thing is complicated a bit by things like '@b = @a')
lue Alright. I was probably thinking about @ when trying that. 21:25
masak r: my @a; my @b; say @a === @b 21:26
p6eval rakudo 11157e: OUTPUT«False␤»
donaldh jnthn: I gave up with BCEL for invokedynamic. It looks like BCEL still requires enhancements to support it.
masak in a way, declaring a @-sigil variable is like having a hidden [] in your code.
donaldh jnthn: I am part way through an experimental ASM port. 21:27
dalek osystem: 72153fe | (Timothy Totten)++ | META.list:
Added Squerl as a standalone project.
21:30
donaldh jnthn: I have completed P6opaque with all tests passing, so now on to JASTToJVMBytecode 21:31
jnthn donaldh: I'd largely expected to have to throw together a few classes if it was done with BCEL
Oh wow, that's awesome progress
Are you pushing this somewhere?
donaldh It's on the asm_port branch of my fork.
On github
jnthn OK. You have a commit bit to The Repo too if you want to work on it in a branch there :) 21:33
21:33 Chillance joined
donaldh JASTToJVMBytecode looks like it will be a bit harder for me to grok. I'm guessing you had to do a lot to track jump targets. ASM does that with Labels so might even simplify the logic. 21:33
jnthn My logic basically implements labels :) 21:34
The whole thing is, well, an assembler :) 21:35
You may be better off just starting over.
donaldh jnthn: Good point. I could switch to a branch in The Repo now. I am at a good point to switch.
jnthn And working through making t/jast/jast.t pass.
The entire language it spits out is done by dump methods in lib/JAST/Nodes.nqp 21:36
If it makes your life easiesr there's no reason you can't change exactly what it emits too
Be a bit careful around string literals, is all :)
21:37 xilo left
donaldh jnthn: thanks. 21:37
jnthn Thanks for working on this. I did a bunch of the refactors to the calling stuff in preparation for invoke dynamic already, so it's good timing that you're tackling it from the code-gen side. :) 21:38
TimToady masak: rosettacode.org/wiki/Maze_solving#Perl_6 # better? :) 21:40
jnthn donaldh++ # writes prettier Java than me :) 21:42
donaldh :)
donaldh writes Java for a $dayjob
donaldh would love to use Perl 6 as a scripting language on JVM for $dayjob :) 21:43
tadzik dreams of releasing his Perl6 adventure game as an android app 21:46
[Coke] donaldh: that's pretty much my path to using perl6, aye. 21:51
jnthn has final day of teaching this week tomorrow, and then will have plenty of Perl 6 tuits on Friday. :) 21:52
21:52 xilo joined
dalek osystem: bf59ff4 | (Timothy Totten)++ | META.list:
Added Hinges, formerly Hitomi, as standalone project.
21:55
masak TimToady: immesurably better. also, cool trick. 21:57
TimToady: you keep surprising me with how much computation can actually be done at "constant declaration time".
TimToady unfortunately, breaks rakudo 21:59
masak anything submittable? 22:00
22:01 xilo left
LlamaRider I never understood the exact view on backwards compatibility for perl6-to-p5. I see there is a "most wanted list" of CPAN modules in Perl6, does that mean all of CPAN will need to be reimplemented? 22:01
TimToady r: enum WAT (<a b c>);
p6eval rakudo 11157e: OUTPUT«===SORRY!===␤Method 'returns' not found for invocant of class 'Parcel'␤» 22:02
TimToady masak: ^^
n: enum WAT (<a b c>); say c;
p6eval niecza v24-31-g7d73dd1: OUTPUT«c␤»
TimToady n: enum WAT (<a b c>); say +c;
jnthn TimToady: Is there *any* restriction at all on what you can put in an enum declarator?
p6eval niecza v24-31-g7d73dd1: OUTPUT«2␤»
masak TimToady: I think that one is known. 22:03
TimToady sure, value has to be available at compile time
jnthn TimToady: 'cus I'm Rakudo it's been treated as syntactic and we try to pick it apart.
22:03 lustlife left
masak jnthn: yeah, the valu... what TimToady said. 22:03
jnthn yes but...how to know all the things are available without actually (a) running it, or (b) analysing the AST? 22:04
And if you do (a) how do you know?
TimToady well, the parens are supposed to be vaguely reminiscent of, like, an expression or something... :)
masak LlamaRider: currently, there's no p6-to-CPAN connection. until there is, important CPAN modules need to be reimplemented in Perl 6.
22:05 xilo joined
TimToady if the values aren't there, then the programmer has written something erroneous, and likely to cause subsequent compilation to fail 22:05
jnthn TimToady: Is there any reason I should not just do something like run the thing in the parens as an eval and expect a pair or hash or parcel back?
22:05 xilo left
jnthn er, as a BEGIN I mean... 22:05
lue LlamaRider: but we definitely don't want to port every CPAN module to Perl 6 22:06
TimToady I suspect that is more or less what niecza is doing to make it work
tadzik r: say so any(Int, Str) ~~ Int
p6eval rakudo 11157e: OUTPUT«False␤»
tadzik that's puzzling
TimToady it's that WAT of allowing you to check something to see if it ~~ Junction
jnthn TimToady: Right. I'm asking this as a more general question when we have non-trivial values needed at compile time.
22:06 kaare__ left
jnthn n: enum Foo ((say 'omg')) 22:07
tadzik WAT?
p6eval niecza v24-31-g7d73dd1: OUTPUT«omg␤»
22:07 xilo joined
jnthn n: my $x; enum Foo ($x) 22:07
p6eval niecza v24-31-g7d73dd1: OUTPUT«Use of uninitialized value in string context␤ at /home/p6eval/niecza/lib/CORE.setting line 1341 (warn @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 266 (Mu.Str @ 15) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.settin…
22:07 skids left
tadzik hm, wrong side 22:07
LlamaRider masak: Is there an active effort for a connecting p6 to CPAN? If yes, why bother reimplementing? If not, why not outright confess all of CPAN needs redoing?
jnthn TimToady: My question is mostly about things like that.
masak LlamaRider: yes, several. but it's *hard*.
LlamaRider: not all of CPAN needs redoing.
TimToady I see no reason not to let the programmer shoot themselves in the noose there
masak LlamaRider: allegedly, much of it is crap :)
LlamaRider :D 22:08
TimToady 111% of CRAP is cpan
masak hee hee... enough gun to shoot yourself in the noose. :P
lue puts TimToady's "noose" sentence in a safe place 22:09
masak Perl 6 gives you enough dada to duck yourself in the sauce.
jnthn TimToady: OK. I'd somewhat got the impression that there might want to be this kinda half-way house betewen expecting a simple syntactic value thing and full-blown BEGIN. I'm kinda happy enough if there isn't anything in that space, though... :) 22:10
TimToady why make extra work? :)
jnthn Well, val is sorta kinda in that space, ish :)
TimToady it's not like you're allowed to do much with it till CHECK time anyway...
jnthn True :) 22:11
rn: enum Foo (1,2,3)
p6eval niecza v24-31-g7d73dd1: ( no output )
..rakudo 11157e: OUTPUT«===SORRY!===␤This type cannot unbox to a native string␤»
22:11 mikemol left
jnthn n: enum Foo (1,2,3); say 2.WHAT 22:11
p6eval niecza v24-31-g7d73dd1: OUTPUT«(Int)␤»
jnthn phew :)
n: enum Foo (1,2,3); say Foo::.keys
p6eval niecza v24-31-g7d73dd1: OUTPUT«0␤»
jnthn n: enum Foo (1,2,3); say Foo::.perl 22:12
p6eval niecza v24-31-g7d73dd1: OUTPUT«Stash.new(...)␤»
jnthn n: enum Foo (1,2,3); say Foo::<0>
p6eval niecza v24-31-g7d73dd1: OUTPUT«(Any)␤»
TimToady n: enum Foo (1,2,3); say Foo.enums.perl
p6eval niecza v24-31-g7d73dd1: OUTPUT«EnumMap.new(...)␤»
TimToady :P
LlamaRider masak: So, say I decide I want to port my favorite CPAN module to p6. Would I be expected to copy it verbatim (pass the same test suite, have the same features). More importantly, should I expect my work will go to waste when/if a CPAN connection is achieved?
TimToady n: enum Foo (1,2,3); say Foo.enums.pairs.perl
p6eval niecza v24-31-g7d73dd1: OUTPUT«("1" => 0, "2" => 1, "3" => 2).list␤» 22:13
jnthn n: enum Foo (1,2,3); say ::MY.keys.grep(/\d+/)
p6eval niecza v24-31-g7d73dd1: OUTPUT«Unhandled exception: Unable to resolve method keys in type MY␤ at /tmp/P0IIcYmEXU line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4284 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4285 (module-CORE @ 581) ␤ at /home/p6…
jnthn n: enum Foo (1,2,3); say MY::.keys.grep(/\d+/)
p6eval niecza v24-31-g7d73dd1: OUTPUT«0␤»
jnthn Hm :) Seems it's not keen to install non-string keys 22:14
TimToady you mean non-identifier maybe
masak LlamaRider: re verbatim, that's a matter of taste and purpose. jnthn and I ported a module recently-ish, and kept the API but replaced the innards with something nicer.
jnthn TimToady: uh, yes 22:15
jnthn blames teaching and too little sleep :)
masak LlamaRider: re wasted work, if there's a *need* for the module now, it's not a waste if we have the module now.
LlamaRider: also, it's a matter not just of time, but of risk. who knows how long until we have a working CPAN connection? 22:16
LlamaRider masak: Is there an easy way of reusing test suites by now? Would be nice to have everything up to Test::More before I even think of porting something. 22:20
but I do feel itchy to do something meaningful in p6 and learn some more of it in the process.
masak porting test suites is usually fairly straightforward. 22:21
we have a Test::More, included in both Rakudo and Niecza. 22:22
but we just call it Test :)
tadzik gist.github.com/tadzik/5103684 22:24
...now, that was dramatic
I didn't want "game over" to be so terminal 22:25
TimToady there was definitely a lot of terminal there...
masak tadzik: boy did that troll kill you hard!
went through the ground, the floor, the fourth wall, and the VM. 22:26
tadzik boy, isn't that a big club
The troll is big and ugly, and carrying a club that's at least as wide as the Rakudo memory management stack
masak .oO( or is the troll just happy to see you )
TimToady was trying to visualize a memory management stick
tadzik masak: I lol'd 22:27
lue (that troll really... RAMmed you into the ground, eh?)
masak tadzik: I pondered whether to write that out loud.
tadzik that's what you get, playing the warrior in Perl 6 MMORPG
I should've surrendered 22:28
TimToady we should rewrite git using an adventure API, it would be much more accessible
tadzik Tony the Thief vanishes, along with your revision history. Better luck next time 22:29
worthy of the name of a GC bug, it's of course not reproducible :)
masak catch him in the reflog!
tadzik Tony the Thief uses rebase. It's super-effective! 22:30
lue You are in a maze of twisty branches, all alike.
tadzik $ git-yarn unroll 22:31
geekosaur git fetch kitten?
TimToady What, with your bare hands?!?
as it happens, I used a towel... 22:32
tadzik fatal: 'kitten' does not appear to be a git repository
24.media.tumblr.com/tumblr_m51r74hg...o1_500.jpg
22:32 labster joined
masak November was almost named 'kittens'. 22:32
TimToady I dunno, "You naughty November" just doesn't quite have the same ring to it 22:33
22:33 Chillance left
lue
.oO(git help would suddenly be completely unhelpful half the time)
22:33
geekosaur ...wouldn't that be an improvement? 22:34
TimToady Nothing happens.
tadzik geekosaur: haha
TimToady sometimes nothing is an improvement
lue I'm thinking of Invisiclues and their fake hints
jnthn sleep attempt...'night & 22:35
TimToady o/
supernovus So, HTTP::Easy is still holding out for the IO::Socket::INET.get() bug fix, but I can happily say that the SCGI library has been updated and works properly again (and is still the fastest adapter for deploying web applications.)
22:36 PacoAir left
TimToady xyzzy & 22:36
labster good *, #perl6
r: say join '-', ('a', Nil, 'b') 22:37
p6eval rakudo 11157e: OUTPUT«a-b␤»
labster rn: my $x = Nil; say join '-', ('a', $x, 'b')
p6eval niecza v24-31-g7d73dd1: OUTPUT«Use of uninitialized value in string context␤ at /home/p6eval/niecza/lib/CORE.setting line 1341 (warn @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 266 (Mu.Str @ 15) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.settin…
..rakudo 11157e: OUTPUT«a--b␤»
lue will muck around with his apache setup later then 22:39
22:40 rindolf left
labster Well... it's not as if Nil is well defined right now 22:40
But I would definitely use KittenWiki.
lue labster: I was referring to supernovus' comment about SCGI
labster lue: I was referring to to my p6evals 22:41
lue OK. Seemed like you responded to me :P 22:42
labster I'm responding to you now :P 22:43
Oh, since you're here lue, I ended up rewriting the Lingua::Number thing entirely. I realized that Unicode CLDR folks had already put together a numbering system, so I decided to implement that instead. 22:45
lue Ah. /me looks up CLDR 22:46
labster Less learning foreign language for me, but more than 60 languages supported.
supernovus So, Web::App with the SCGI adapter is confirmed to be working. Let the Perl 6 web app extravaganza begin! ;-) 22:47
labster RBNF (rule-based number formatting) in particular is what I'm using. I mean, I could just ask ICU to do it, but where's the fun in that?
\o/
masak supernovus++ # "hinges", I get it ;) 22:54
'night, #perl6
labster night masak 22:55
supernovus night masak!
Well, I'm off, have a good * #perl6 :-) 22:58
22:59 supernovus left, araujo left 23:00 donaldh left 23:03 fgomez left 23:09 xilo left 23:13 grondilu left 23:22 mikemol joined 23:25 raiph left 23:26 xilo joined 23:28 bluescreen100 left 23:29 woolfy left 23:34 tokuhir__ joined, tokuhir__ left 23:35 Liz joined, Liz is now known as Guest63792, Guest63792 is now known as lizmat 23:36 skids joined, Ulti joined 23:37 tokuhiro_ left, mberends left, mberends joined 23:42 cognominal joined 23:51 spider-mario left