»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by lichtkind on 5 March 2010.
00:01 calin left
sorear True or false: Rakudo's move to git caused all but 2 core developers to quit in disgust. 00:04
patrickas can the answer to that be a junction ? 00:06
00:10 kokajxo left
lue where was it before? 00:11
eternaleye lue: In the parrot repository under languages/ (SVN) 00:12
sorear: I don't remember anyone ragequitting over the move to git
lue why would you quit *in disgust* ? git is a product of Linus Torvalds! 00:13
I say False 00:14
snarkyboojum as a new contributor it doesn't really matter which cvs is in use by a project, you just learn enough to contribute
that's my experience anyway :)
00:15 redicaps joined
snarkyboojum I think pulling in new devs to a project or losing them is a function more of the project and the culture than the versioning tool used 00:16
00:16 wolverian joined
eternaleye +1 00:17
lue
.oO(we switched to git more developers)
00:18
snarkyboojum the current debate on #parrot doesn't seem to be considering that, and anyway, both SVN and Git are comprehensive and effective versioning tools 00:20
end rant :)
lue that seemed more like an observation than a rant :)
snarkyboojum lue: true :) 00:21
lue jnthn --rantify --target="snarkyboojum" --when="[17:20:16]" 00:22
00:24 patrickas left 00:25 k23z__ left
lue darn, jnthn must be offline :) 00:26
00:27 envi_home2 is now known as envi_home 00:32 cdarroch left
diakopter sorear: who were the core developers prior to the move 00:32
sorear: oh; you don't know..? /me backlogs irclog.perlgeek.de/parrot/today 00:33
heh. 00:35
00:36 astinus joined
sorear Synopsis clarification request: S09. Do arrays allocate [1] and [0] when allocating [2]? Do arrays with finite defined index sets allocate eagerly? How is it possible to index an array with an infinite number of dimensions, when equality of infinite lists is Rice-hard? Can individual array elements be tied or bound? Is S09:718 a typo? 00:41
How are slice expressions where the subscript evaluates to 0 or 1 element disambiguated from zen slices and index expressions, respectively? 00:42
lue rakudo: my @a= (3); @a[2]=3; say @a.perl
p6eval rakudo c4857a: OUTPUT«[3, Proxy.new(), 3]␤»
lue proxy? ō.o 00:43
sorear rakudo != spec
lue of course it doesn't. that's why people are developing it :D 00:44
00:46 mce_ro left
lue std: rakudo == spec 00:46
p6eval std 30529: OUTPUT«===SORRY!===␤Preceding context expects a term, but found infix == instead at /tmp/Jexl3dHlBm line 1:␤------> rakudo ⏏== spec␤Parse failed␤FAILED 00:01 110m␤»
sorear that error message could stand to be more awesome 00:49
00:49 wolverian left
diakopter std: ::rakudo == ::spec 00:49
p6eval std 30529: OUTPUT«ok 00:01 108m␤»
sorear ideally it should backtrack - list prefix operator cannot be used preceding an operator; did you mean rakudo() ? 00:50
s:2nd/<?before "operator">/infix /
lue (won't dare this, but) wonders if easter eggs in rakudo would be overlooked by every. body. who. contributes. 00:51
diakopter just kickban dalek temporarily :P 00:52
lue and anyone who questions/objects the kickban :) 00:53
00:54 snarkyboojum left
eternaleye Simpler: Just wait until dalek hiccups next 00:57
Happens every once in a while
00:57 k23z__ joined
lue tries to open the OOP floodgates... but doesn't have op. :( 01:00
s/op/commit bit/
TimToady sorear: zen slices are syntactically empty, .[@empty] is never zen
allocate [1] and [0] on [2]=, yes, for some definition of allocate, but do the elements respond to :exists is a good question 01:01
I think index sets should give the appearance of having been allocated eagerly, probably 01:02
I didn't write much of that middle section; I get svn blamed because I just installed a huge patch from p6l folks. :) 01:03
so I don't know if it is a typo
or about infinite dimensionalities; I hadn't thought we were doing hilbert spaces :)
for default arrays, elements may be bound, but not for native types 01:04
01:08 rv2733 left
sorear TimToady: How does postcircumfix:<[ ]> know that the inside is syntactically empty? 01:11
And what about @one-element-list?
TimToady a slice of one element is indistinguishable from a normal index 01:12
postcircumfix:<[ ]> (the operator) never sees the zen slice 01:13
sorear I thought slices generated things that act like arrays
TimToady postcurcumfix:sym<[ ]> asks the semilist if there were any statements inside
sorear ** is specced as meaning ||(* xx 1..*) 01:14
an infinite number of *s
TimToady no, an *arbitrary* number of *s
presumably only works on an array of known dimensionality 01:15
sorear it's specced that way for creating arrays too
TimToady well, that may be undoable
and I'm certainly not interested in slowing down 6.0 over issues like that :) 01:16
I'd go as far as to say none of the ** stuff is needed for 6.0
on slices, .[@foo] is always taken as single dimensional; we have a Slicel type to indicate that there was a ; in there, so that we can distinguish a Slicel from a Parcel 01:19
so, .[@foo] gets a parcel, while .[@foo;] gets a slicel 01:20
and presumably a final ; like that is considered "zen"
01:29 pastiche joined
TimToady colomon: if we make CaptureCursor bindings ignore slurpies for the returned position, then your pairwise binding reduces (no pun intended) to -> map $a, *$b {...} 01:34
that is, slurpy parameters could be considered "lookahead"
er, s/-> map/map ->/
01:39 orafu left, orafu joined 01:43 redicaps left 01:45 redicaps joined
pastiche A Perl6 idiom I've seen a couple times is this: `my Foo::Bar $fb .= new;`. Is that short for `my Foo::Bar $fb = $fb.new;`? And if so, how can that work, since you seemingly haven't yet instantiated the Foo::Bar to call `new()` on it? 01:47
sorear 1. Yes. 01:49
2. Every type has an undef value. The undef value of a class type is considered to be the class itself, and supports a new method
sjohnson hello all
01:50 Minimiscience joined
sorear Hello 01:50
pastiche @sorear: then, shouldn't `my Foo::Bar $fb .= new;` instead be short for `my Foo::Bar $fb = Foo::Bar.new();`? 01:51
sorear No
Or, yes
Foo::Bar is the inital value of $fb if no initializer is given 01:52
01:52 JimmyZ joined
pastiche But, in the statement `my Foo::Bar $fb = $fb.new();`, it looks like $fb is not yet instantiated when you call `.new()` on it. 01:53
Can the syntax for making a new Foo::Bar object be broken up into 2 lines? What would that look like? 01:54
sorear my Foo::Bar $fb;
$fb .=new;
# equivalently
my Foo::Bar $fb = Foo::Bar; # this is how you write undef in perl 6
$fb .=new;
# equivalently
my Foo::Bar $fb; 01:55
$fb = Foo::Bar.new;
pastiche @sorear: thank you. 01:56
01:57 dual left
sorear @? 01:57
01:59 Psyche^ joined
sjohnson aka at sorear: 01:59
would be my guess
gfldex the @ in front of a nickname is forumspeak 02:01
very common in MMORPGS too
read: he is a rather jung lad :)
sorear mmm, Jung 02:03
02:03 Patterner left, Psyche^ is now known as Patterner
sorear TimToady: There's some interesting potential for awesomeness in STD's parsing of <list prefix operator> <infix> 02:04
i.e. sub_sub == 2
STD currently diagnoses a zero-terms-in-a-row error
02:05 Minimiscience left
pastiche @sorear: I thought I was supposed to type `@sorear: ` and then my comment when directing a comment toward you. 02:05
sorear I see. 02:06
jnthn sorear: "True or false: Rakudo's move to git caused all but 2 core developers to quit in disgust." - er, wtf? 02:07
false but...huh.
diakopter jnthn's alive
jnthn yeah... 02:08
colomon Iceland!
jnthn Iceland brews some quite nice beer. :-)
The people are friendly.
sorear jnthn: that argument, minus some strawmanning, was used on #parrot a couple hours ago
jnthn sorear: And, uh, who on earth left?
diakopter jnthn: sorear was referring to #parrot .. yes
jnthn At the time we moved, the core developers were, er, me and Pm. 02:09
lue so it's TRUE!
sorear awaits the compaints abount dBNPERL;
jnthn Yes, there were other folks contributing but...nobody I'd consider "core".
diakopter soft-core maybe
jnthn Anyway, I don't give a damm what #parrot do.
If they want to use svn, they can use it. If they want to use git, they can use it. 02:10
diakopter or they can debate it
lue thinks of model of insides of Earth, only it's the insides of rakudo and the whole of perl6
02:10 nihiliad joined
jnthn I'll still, provided I have a commit bit, patch it either way. 02:10
sorear and without a commit bit it doesn't affect me either 02:11
jnthn diakopter: If the level of the debate is suggesting things about Rakudo development that have no basis in reality, well... :-/
02:13 fridim_ joined
lue last I checked, #parrot was about Parrot, not (directly at least) about Rakudo. 02:13
diakopter well. 02:17
a hand-dug one.
lue afk 02:31
02:38 chromatic joined
chromatic I find that summary of the dicussion on #parrot inaccurate. jnthn or pmichaud or any other Rakudo committer during the Git switch, would you switch to Git again now, knowing what you know a year later? 02:38
diakopter is jealous of chromatic's fios 02:42
er, envious 02:43
chromatic I don't recommend it; the choice is between Comcast or Verizon. 02:44
That's almost as bad as the choice between Comcast or Qwest. 02:45
diakopter my neighborhood has only Comcast & AT&T
eternaleye I'm currently on FiOS too, it's good for speed but crappy for reliability. I just want Google to play ISP. 02:46
sorear jnthn: That's not the level of the debate. That's the worst thing that came up. The rest was much tamer. 02:47
chromatic Reliability is good, except for when Verizon's DNS mysteriously fails.
eternaleye I just use 8.8.8.8 & 8.8.4.4 02:48
So I can ignore those
GoogDNS++
chromatic I have local DNS too, but apparently there's filtering.
eternaleye ick 02:49
Main reason I switched away from verizon's DNS servers is that they redirect NXDOMAIN to their own (awful) page. 02:50
chromatic Yeah, that's why I switched too... except....
eternaleye Well, GoogDNS is global-anycast, and they specifically say they do no filtering 02:51
02:53 fridim_ left 03:00 wknight8111 left 03:01 zostay left 03:02 nihiliad left
sorear rakudo: has $x 03:05
p6eval rakudo c4857a: OUTPUT«You can not add an attribute to a module; use a class or role␤current instr.: 'perl6;Perl6;Compiler;Module;attributes' pc 30043 (src/gen/package_pm.pir:625)␤»
diakopter rakudo: say $*CURRENT_MODULE; say 4 03:13
p6eval rakudo c4857a: OUTPUT«4␤»
diakopter rakudo: say 55 ~ $*CURRENT_MODULE; say 4
p6eval rakudo c4857a: OUTPUT«Contextual $*CURRENT_MODULE not found␤current instr.: 'perl6;Perl6Exception;throw' pc 14877 (src/builtins/Seq.pir:28)␤»
diakopter weird
I guess rakudo's 'say' still has some special-cased exception handling 03:14
03:19 pastiche left 03:21 plobsing left 03:25 Transformer joined, Transformer left
sorear might be worth bugging 03:28
diakopter I'm pretty sure masak has bugged that one to bugdeath 03:29
03:37 alester joined
sorear is looking into macro implementation 03:43
diakopter o_O 03:49
in rakudo? or in STD :P
sorear rakudo 03:56
dalek meta: r232 | diakopter++ | trunk/Sprixel/Main.cs:
[perlesque] add -e 'eval code' option to Sprixel.exe
meta: r233 | diakopter++ | trunk/Sprixel/Main.cs:
[perlesque] fix my (not 1, but 3!) off-by-one errors. :|
sorear but first I need to understand the spec well enough to figure out exactly what the bodies of macros are supposed to /do/ :/
the obvious way is to treat the body of the macro as just a grammatical action 03:59
running in a $/ topicalizer and returning a PAST::Node via make 04:00
diakopter I've slept since I last read that portion of the spec, so ... I'd be no help. 04:01
sorear: I think TimToady commented on macros here; you might search the irclogs 04:09
04:10 plobsing joined 04:12 meppl joined 04:13 justatheory left 04:32 nihiliad joined 04:34 plobsing left 04:38 gfx joined 04:55 cj left 05:02 kst` left, kst` joined 05:03 ReiniUrban joined 05:04 rurban left 05:05 ReiniUrban is now known as rurban 05:08 crythias left 05:11 dalek left
lue
.oO( dalek is gone. Time for that easter egg :) )
05:12
05:13 alester left, dalek joined 05:15 snarkyboojum joined 05:17 cj joined
sorear Why does ~~ have chain associativity? It's not transitive 05:29
What is the model of operator precence order? The synopsis seems to imply a Stern-Brocot tree with the standard operators identified with the leaves of some truncation, but if I try really hard I can construe it to also mean a free preorder 05:31
05:33 fridim_ joined 05:37 nihiliad left 05:39 redicaps left
lue goodnight moon 05:44
05:46 kaare joined, kaare is now known as Guest62733 06:04 snarkyboojum left 06:07 gfx left 06:10 molaf joined
sorear diakopter: suprisingly enough, the thing on macros actually mostly makes sense 06:11
Is anybody running an "anti-smoker", to find out if any spectests have started working and we forgot to unfudge them? 06:13
chromatic I forget the name of the program, but there's a test summary program which does exactly that. 06:14
sorear most test harnesses have a thingie for "unexpected successes" 06:15
however, the fudger defeats that
chromatic tools/autounfudge.pl ?
sorear anything guarded by #?rakudo skip is- I'm blind
06:23 kokajxo joined
sorear next, to study the grammar 06:28
06:33 pmurias joined
diakopter pmurias: g'morning? 06:42
sleep& 06:43
truewar Good morning) 06:50
sorear Hello! 06:59
pmurias diakopter: g'morning 07:00
and g'night
07:03 dalek left
truewar Could anybody introduce me to Perl6? 07:06
07:07 JimmyZ left, dalek joined
truewar I am mostly interested in Perl6 Roadmap 07:07
07:08 JimmyZ joined 07:13 JimmyZ left
sorear truewar, Perl6. Perl6, truewar. 07:14
if you want a better introduction we'll need to know more about you
trying to explain Perl6 from first principles would take days (weeks?), but we can skip most of that depending on what you know 07:15
are you a programmer and are you a Perl 5 programmer are the easiest questions
07:20 sorear left 07:21 sorear joined
sjohnson truewar: perl6.org 07:22
and you're done!
07:24 kokajxo left
sorear rakudo: sub circumfix:<AA BB> { ... }; AA 2 BB; 07:33
p6eval rakudo c4857a: OUTPUT«error:imcc:syntax error, unexpected '\n'␤ in file 'EVAL_1' line 58␤Confused at line 11, near "AA 2 BB;"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
sorear rakudo: sub circumfix:«AA BB» { ... }; AA 2 BB;
p6eval rakudo c4857a: OUTPUT«error:imcc:syntax error, unexpected '\n'␤ in file 'EVAL_1' line 58␤Confused at line 11, near "AA 2 BB;"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
sorear huh, rakudo doesn't actually seem to implement scoping of operator definitions 07:35
at all
this makes things easier
what exactly is a nibbler? 07:41
moritz_ it's a thing that transforms a grammar; or a parametric grammar; or some such :-) 07:44
sorry, can't answer "exactly"
07:45 M_o_C joined
pugssvn r30530 | pmurias++ | [mildew] started rewriting m0ld using Regexp::Grammars 08:04
08:14 molaf left 08:16 synth joined 08:17 chromatic left 08:18 snarkyboojum joined
pugssvn r30531 | moritz++ | [t/spec] fudge\e tests for rakudo 08:40
r30532 | pmurias++ | [mildew] m0ld parses a simple call 08:42
moritz_ sorear: what's true is that after rakudo moved to git, the numbers of patches decreased, because the rakudo code base wasn't subject to parrot's codingstyle tests... 08:46
sorear: and there were a bunch of people regularly fixing trailing whitespace in rakudo 08:47
those people usually weren't given commit access to the rakudo repo on github
so if you look at the bare numbers, yes, the numbers of commiters decreased - but the number of features or bug fixes didn't 08:48
08:49 kst` is now known as kst 08:50 dalek left 08:52 Su-Shee joined, dalek joined
sorear Why does NQP's regex engine wrap the *source* string in a CodeString? 08:59
moritz_ because it allows easier search for line numbers, iirc
but pmichaud said it was going to change
sorear wonders why we don't just track lines in $*LINE in the .ws rule 09:00
09:03 wolverian joined
sorear reading the grammar for grammars is more than a little trippy 09:07
09:11 iblechbot joined 09:14 truewar1 joined 09:16 truewar left 09:22 gurjeet left, gurjeet joined 09:23 alexn_org left 09:25 mberends joined 09:26 mberends left 09:29 JimmyZ joined
Guest62733 Parrots runtime/parrot/library/Pg.pir seems to work, or at least t/library/pg.t runs OK. 09:32
Can I somwhow use Pg.pir from rakudo?
sorear yesish 09:33
pir::load_library("pg.pir")
er
pir::load_bytecode("pg.pir")
Guest62733 will try try 09:34
09:34 fridim_ left
sorear you'll then need to do some trickery with pir::get_root_global__PPS to import the symbols you want to use 09:34
I guess my next project is to fix use :from<parrot> in Rakudo 09:35
alpha: use Pg:from<parrot>;
p6eval alpha 30e0ed: OUTPUT«error loading libpq - loadlib failed␤in Main (file <unknown>, line <unknown>)␤»
sorear now understands enough regex guts to at least *try* macros 09:39
Guest62733 sorear: Even if I just want to use it as a class?
sorear Guest62733: A class is just a kind of global 09:40
Guest62733 yeah, makes sense. 09:41
09:43 kokajxo joined
sorear TimToady: What is the rationale for invoking macros with the match object in self, instead of $/ ? 09:48
09:48 masak joined
masak ahooloi, lambdacamels, parrotcamels, and camelcamels. 09:48
sorear hello masak 09:49
masak what's new? 09:50
JimmyZ \0\o
moritz_ writes a Perl 6 talk 09:51
sorear tries to write a macro implementation
moritz_ any recommendations what I could use for my slides?
masak sorear: !
moritz_: what a general question?
s/\?/./
moritz_: what kind of talk is it?
moritz_ sorear: just a word of warning, I think pmichaud mentioned that he doesn't want macros before rakudo star
masak: Perl 6 for a perl 5 perl mongers group 09:52
I meant to ask about the technical side
what kind of software to use for writing the talk
I kinda started writing my own, but that seems very inefficient
masak always ends up writing his own :P
09:57 envi_home left, envi^home joined
JimmyZ hugme: help 09:58
hugme JimmyZ: (add $who to $project | list projects | show $project | hug $nickname | tweet $twittername $message )
JimmyZ hugme: list projects
hugme JimmyZ: I know about book, gge, hugme, ilbot, json, november, nqp-rx, nqpbook, perl6-examples, proto, pugs, rmp, svg-matchdumper, svg-plot, temporal-flux-perl6syn, tufte, web
JimmyZ p6c 10:00
masak moritz_: any chance we could add tardis and yapsi to that list? 10:02
moritz_ masak: take your chances, do it :-)
hugme: add masak to hugme
hugme moritz_: ERROR: Can't add masak to hugme: HTTP/1.1 401 Unauthorized
moritz_ ouch 10:03
hugme: add masak to json
hugme moritz_: ERROR: Can't add masak to json: HTTP/1.1 401 Unauthorized
moritz_ hugme: add masak to book
hugme hugs masak. Welcome to book!
moritz_ ok, it's just my account that's b0rked
masak is already welcome to book :)
mayhaps I'll send a patch...
moritz_ masak: I'll just fix hugme so that I can add you to hugme :-) 10:04
masak: then you can push
masak :P
I'll prepare the commit in the meantime.
moritz_ hugme: reload
hugme moritz_: reloaded successfully
moritz_ hugme: add masak to hugme
hugme hugs masak. Welcome to hugme!
moritz_ there you go 10:05
masak hugs hugme. thank yoU!
moritz_ I had just changed my github password, which in turn changed the API token
JimmyZ hugme: hug masak
hugme hugs masak
masak hugme has no README :P
moritz_ masak: you'll find projects.json pretty self-explanatory
masak hugme: hug 卓明亮
hugme hugs 卓明亮 and blushes
masak :)
JimmyZ hugme: show rakudo 10:06
hugme JimmyZ: sorry, I don't know anything about 'rakudo'
JimmyZ hugme: show nqp-rx
hugme JimmyZ: the following people have power over 'nqp-rx': PerlJam, TimToady, [particle], colomon, jnthn, masak, moritz_, pmichaud. URL: github.com/perl6/nqp-rx/
moritz_ hugme doesn't know about CLAs
masak patches welcome :)
JimmyZ hugme: hug 麦高 10:07
hugme hugs 麦高
masak :) 10:08
JimmyZ humge: why not blush?
masak she only blushes occasionally.
10:09 rurban left
masak hugme: reload 10:11
hugme masak: reloaded successfully
masak hugme: list projects
hugme masak: I know about book, gge, hugme, ilbot, json, november, nqp-rx, nqpbook, perl6-examples, proto, pugs, rmp, svg-matchdumper, svg-plot, temporal-flux-perl6syn, tufte, web
moritz_ hugme: reload
masak hm.
hugme moritz_: reloaded successfully
moritz_ hugme: list projects
hugme moritz_: I know about book, gge, hugme, ilbot, json, november, nqp-rx, nqpbook, perl6-examples, proto, pugs, rmp, svg-matchdumper, svg-plot, tardis, temporal-flux-perl6syn, tufte, web, yapsi
masak \o/
I was too quick.
moritz_ I still have to pull manually on feather2 10:12
paranoia etc.
10:15 gurjeet left, gurjeet joined
masak ah. 10:18
yes, keep it that way.
10:25 JimmyZ left 10:26 M_o_C left
colomon I didn't know I had a commit bit on nqp-rx. (Or had forgotten, at any rate.) 10:26
moritz_ colomon: you probably don't, unless you gave yourself one
sorear hugme's list is metacommitters 10:27
moritz_ colomon: it's the list of people who can add commiters, not he committers
right, what sorear said
truewar1 Sorear, sorry. was AFK
sorear don't apologize, we have logbuffers for a reason
colomon ah, that makes sense.
sorear I'm AFK 8-18 hours a day and never apologize about it
truewar1 I used PHP for 8 years. I also used Perl5 several times for small scritps: backup, creating hosting accounts etc. 10:28
But now I have some reasons to choose other tahn PHP language for my projects. 10:29
I read about Python and I even wanted to choose it and BAH! found Perl6 10:30
I read some tips about it, about objects model
They are really nice
masak we like it too. :) 10:31
truewar1 Does it have any road map or something? What future waits for that project?
masak truewar1: maybe someone has told you this already, but current implementations (like Rakudo) are both quite far along and a bit bumpy still. 10:32
10:32 truewar1 is now known as Truewar
masak Truewar: github.com/rakudo/rakudo/blob/maste...cs/ROADMAP 10:32
Truewar: the immediate future holds a promised distribution release called Rakudo Star. 10:33
jnthn Morning :-)
masak jnthn: \o/
jnthn And yes, it *is* still morning in Iceland!
moritz_ what time zone is iceland? GMT-2?
ah, UTC 10:34
just found it
masak that's my favorite time zone :)
10:35 JimmyZ joined
Truewar WHat kind of soft I need to use perl6 for web projects? 10:35
sorear hmm
masak Truewar: last year we developed something called Web.pm for exactly that purpose.
sorear Do I understand correctly that, while we parse a file, the Match objects retain *both* a full AST *and* the PAST? 10:36
masak but it's not done yet, and the best advice I have is to start small and be patient.
moritz_ sorear: yes
sorear I wonder if that accounts for much of our memory use when compiling the setting
masak Truewar: if you haven't done any Perl 6 before, it might be better to start with something non-web. the web parts are still full of frustration. 10:37
and I don't believe latest Rakudo does sockets yet.
jnthn masak: I'm pretty sure sockets are back since a while. 10:38
masak I sit corrected. sockets are back.
(whoever did that)++
jnthn I forget who, but yes. :-) 10:39
masak: Well, I like the timezone shift in that I could get up at a sensible time here, but it was like sleeping until midday back home. 10:40
Truewar %)
masak jnthn: there's a 'fun' surprise for you when you go back home, then... :P 10:41
jnthn masak: oh noes...
I should just do continual round-the-world trips.
masak then you'll inexplicably start to lose days instead :) 10:42
sorear trait_mod: stuff is only run at CHECK time?
this will make the implementation of 'is parsed' somewhat awkward 10:43
masak I'm doing spectesting now in order to apply JimmyZ's patch. are the 9 fails in t/spec/S05-mass/properties-derived.rakudo known? 10:44
moritz_ runs that file 10:45
All tests successful.
jnthn sorear: We special case a few of them.
moritz_ masak: one of the properties- files had some tests that pass on some platforms, and fail on others 10:46
masak: maybe somebody unfudged them because they were passing TODOs for them
masak ah.
jnthn sorear: But in general, yes.
moritz_ maye #?skip them this time
masak I've seen those failures before. 10:47
jnthn Min internets e kas.
masak I think I've added fudges for them once.
moritz_ *maybe
masak or not. the file hasn't been touched since August. 10:48
moritz_ then it's a new failure
10:48 kokajxo left
moritz_ maybe related to nqp-rx updates? 10:48
10:50 sjn left
masak yeah... 10:50
this still feels horribly familiar.
masak greps the irclogs
jnthn goes for breakfast...to a place that serves Jack Daniels milkshakes. 11:01
sorear has decided that the sanest way to implement macro foo is parsed(/bar/) { bazzle } is to notionally rewrite it into BEGIN { Perl6::Compiler.add_macro('foo', /bar/, sub ($/) { bazzle });
}
masak backlogs the #parrot discussion about git from last night, and is alarmed and dismayed by how out-of-touch some of the core Parrot people seem to be with Rakudo development 11:08
apart from the spectest failures in two properties- files in S05, I also had a few 'TODO passed' in t/spec/S14-roles/anonymous.rakudo and t/spec/S32-str/uc.rakudo 11:11
sorear rakudo: my $r = { $^a } 11:16
p6eval rakudo c4857a: ( no output )
11:26 wknight8111 joined 11:28 M_o_C joined
JimmyZ good evening, #perl6 11:46
masak \o 11:47
JimmyZ: almost done spectesting your patch. looks godd so far. 11:48
JimmyZ masak: just a replace of substr :) 11:49
masak aye. I know. still, gotta be careful.
sorear ok, time to try it 11:51
sorear builds stage1 11:52
dalek kudo: 376196d | masak++ | src/glue/contextuals.pir:
[src/glue/contextuals.pir] s/concat/replace/
11:56
masak I should have written the name as hanzi as well... :) 12:01
sorear it compiles... 12:07
moritz_ masak: the passing TODO here are in properties-general, not properties-derived 12:08
masak: and the one in S14-roles/anonymous are unreliable :( 12:09
masak yes, unreliable. that's what I got when I ran a second time and didn't get most of the failures and todo passes...
12:13 BrowserUk joined
masak from S12: 'If there is a C<self:sort> operator defined, that will be used.' yet S02 doesn't list 'self:' as a grammatical category. also, the whole thing is quite arbitrary. can we scratch this bit? 12:14
moritz_ +1 12:17
custom sorting is done by overloading infix:<cmp>
masak last time I mentioned this to TimToady, he sounded like he was open to this particular darling being killed. 12:19
if a third person agrees, I'll wipe it from the spec.
moritz_ counts: masak, TimToady, moritz_ 12:20
masak :) I'll log back and see what he actually said.
arnsholt masak: Yeah, that was quite the debate on git/svn 12:21
masak realizes from the irclog search results that he says 'sort' way to often :) 12:24
arnsholt: I'm glad they have the debate, but I'm sad to see some of them so disconnected from Rakudo development. 12:27
moritz_ #parrot?
12:29 iblechbot left
masak yeah. the logs from around midnight. (slightly before and after) 12:30
sorear rakudo: sub infix:sym<@@> ($x, $y) { }
p6eval rakudo c4857a: OUTPUT«A method named '>' already exists in class 'Perl6;Grammar'. It may have been supplied by a role.␤current instr.: 'parrot;P6metaclass;add_method' pc 422 (runtime/parrot/library/P6object.pir:326)␤»
moritz_ masak: I didn't bother to backlog yet
masak submits rakudobug
moritz_ masak: known already
masak ah, ok.
it did look familiar :)
12:37 BrowserUk left 12:43 stepnem left
moritz_ rakudo: sub swap($a is rw, $b is rw) { ($a, $b) = ($b, $a) }; swap(3, 4) # should that die? 12:55
p6eval rakudo c4857a: ( no output )
moritz_ I'm quite sure it should :/
12:55 moritz_ sets mode: +v p6eval
masak aye, me too. 12:55
moritz_ predicts masak's next line 12:56
masak does the thing that fulfills that prediction
moritz_ I have a nice example for named parameters for my talk 12:58
but actually it's not the named paramters that are nice
sub rectangle(:$width, :$height, :$char = 'X') {
say $char x $width for ^$height;
}
masak nice.
moritz_ I think $width and $height should be mandatory if they don't have a default 13:00
masak aye. seems the only sensible defaults are (1,1) or a pair of program-wide constants. 13:02
sorear rakudo: sub foo is bar { }
p6eval rakudo c4857a: OUTPUT«Could not find sub &chars␤current instr.: 'perl6;Signature;_block23798' pc 518026 (src/gen/core.pir:82346)␤»
masak o.O 13:04
rakudo: sub foo($a is rw) { $a = 5 }; foo(42) 13:15
p6eval rakudo c4857a: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 17391 (src/builtins/Junction.pir:410)␤»
masak rakudo: (1, 2) = 3, 4
p6eval rakudo c4857a: ( no output )
masak ok, so it's the list assignment that doesn't pick up on non-rw values. 13:16
moritz_ ah, I remember that I've fudged some tests for that 13:19
13:25 gurjeet left, gurjeet joined 13:26 rv2733 joined 13:29 BrowserUk joined 13:34 k23z__ left 13:42 kokajxo joined 13:48 FreeStorm joined 13:51 FreeStorm left 13:57 finanalyst joined
finanalyst rakudo: my %h=<a b c> Z 1,2,3; for %h { .say } 13:58
p6eval rakudo c4857a: OUTPUT«a 1␤b 2␤c 3␤␤»
finanalyst alpha: my %h=<a b c> Z 1,2,3; for %h { .say } 13:59
p6eval alpha 30e0ed: ( no output )
masak feels like alpha timed out there.
works locally here. 14:00
finanalyst masak: i think there should only be one CR not two in the rakudo output
masak yes, now I see it.
rakudo: my %h=<a b c> Z 1,2,3; say +%h
p6eval rakudo c4857a: OUTPUT«3␤»
masak odd.
finanalyst shall i report a bug? 14:01
masak please do.
finanalyst just checking first.
masak rakudo: my %h=<a b c> Z 1,2,3; for %h { say "!" }
p6eval rakudo c4857a: OUTPUT«!␤»
masak ah, there you go.
no bug :)
or, hm. 14:02
should a hash stringification end in a newline?
maybe not.
anyway, the difference is this:
rakudo: my %h = a => 1; say $a 14:03
p6eval rakudo c4857a: OUTPUT«Symbol '$a' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)␤»
masak oops.
rakudo: my %h = a => 1; say %a
p6eval rakudo c4857a: OUTPUT«Symbol '%a' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)␤»
masak erm.
rakudo: my %h = a => 1; say %h
p6eval rakudo c4857a: OUTPUT«a 1␤␤»
masak alpha: my %h = a => 1; say %h
p6eval alpha 30e0ed: ( no output )
masak locally, 'a 1␤'.
finanalyst seems something wrong with alpha 14:04
masak with p6eval's alpha, yes. 14:05
finanalyst but i think i have used for %h loop before and it did not give an extra CR
i dont understand why it should
masak alpha iterates over the pairs. 14:06
rakudo master doesn't.
finanalyst ah
masak that seems to be the difference.
so I'll change my mind again. 14:07
it's a bug :)
please submit.
finanalyst doing so
masak finanalyst++
14:09 isBEKaml joined, redicaps joined, k23z__ joined
finanalyst std: my %e = <a b c verbose> Z 1,2,3, 'yes'; for %e { .say } if %env<verbose> ~~ 'yes'; 14:10
p6eval std 30532: OUTPUT«===SORRY!===␤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/OTEl6DO1b8 line 1:␤------> verbose> Z 1,2,3, 'yes'; for %e { .say }⏏ if %env<verbose> ~~ 'yes';␤ expecting horizontal whitespace␤Parse failed␤FAILED 14:11
..00:…
finanalyst std: my %e = <a b c verbose> Z 1,2,3, 'yes'; for %e { .say } if %e<verbose> ~~ 'yes';
p6eval std 30532: OUTPUT«===SORRY!===␤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/M1MnsD59gl line 1:␤------> verbose> Z 1,2,3, 'yes'; for %e { .say }⏏ if %e<verbose> ~~ 'yes';␤ expecting horizontal whitespace␤Parse failed␤FAILED
..00:02…
masak you can't put a statement-modifying anything after a block for loop.
that's, like, a category error or something.
statement-modifiers modify statements, not blocks. 14:12
finanalyst oh i see now
std: my %e = <a b c verbose> Z 1,2,3, 'yes'; if %env<verbose> ~~ 'yes' { for %e { .say } } 14:13
p6eval std 30532: OUTPUT«===SORRY!===␤Variable %env is not predeclared at /tmp/sKcs96gWlO line 1:␤------> <a b c verbose> Z 1,2,3, 'yes'; if %env⏏<verbose> ~~ 'yes' { for %e { .say } }␤Check failed␤FAILED 00:02 109m␤»
finanalyst std: my %e = <a b c verbose> Z 1,2,3, 'yes'; if %e<verbose> ~~ 'yes' { for %e { .say } }
p6eval std 30532: OUTPUT«ok 00:02 109m␤»
14:14 BrowserUk left 14:16 redicaps left 14:22 iblechbot joined 14:24 envi^home left 14:27 envi^home joined 14:34 fridim joined
moritz_ rakudo: my %e = <a b c verbose> Z 1,2,3, 'yes'; if %e<verbose> ~~ 'yes' { for %e { .say } } 14:39
TimToady sorear: we don't track $*LINE in <ws> because it would be *very* fragile, especially in the presence of grammar extensions that might match \n or \v or even .*? themselves.
p6eval rakudo c4857a: OUTPUT«a 1␤b 2␤c 3␤verbose yes␤␤»
TimToady also, line numbers would be redundant when we're already tracking the current position in every Cursor
plus, you'd have to track how every different editor counts Unicode characters as lines; much easier to do that in one position-to-line mapping routine than spread across a grammar 14:40
for this reason I keep trying to encourage the parrotfolk to STOP TALKING ABOUT LINE NUMBERS!!!! 14:41
but they ignore me, for hysterical raisins :) 14:42
since the primary point of parrot, to begin with, was that I wasn't to be let near it.
moritz_ you talk about line numbers yourself :-)
TimToady well, but I'm a hypocrite
I wouldn't mind if they talk about line numbers if they also talked more about positions :) 14:43
well, it's not a make-or-break issue for parrot; and neither is git vs svn 14:44
14:46 kokajxo left 14:50 pmurias left
masak indeed. 14:52
14:53 nihiliad joined
TimToady sorear: the macro is probably actually invoked with a Cursor in self, not a Match object; we didn't understand the difference when that spec was written 14:53
sorear the macro's parser, absolutely - it's a regex 14:54
the body of the macro feels like an action method to me 14:55
TimToady and we should proably scrap 'is parsed' and make the inside regex code :)
sorear What.
Where do I put my *code* then?
TimToady inside the regexes { make ... } 14:56
regex's
which, funny thing, returns an AST
just looking at the general solution here
we could still have sugar for old methody non-regex macros
may "macro" is not a sub-slot declarator, but a scope-slot declarator 14:57
macro regex vs macro method
dalek psi: 08364fc | masak++ | lib/Yapsi.pm:
[Yapsi.pm] added Yapsi::Environment

at runtime) into another compilation, allowing for such things as BEGIN time and a REPL.
14:58
moritz_ and eval!
masak hm, indeed.
TimToady well, just poking a method into the current grammar is not quite what macros do currently
masak moritz_: but blocks don't return values yet. so eval could only be used for side effects. 14:59
sorear TimToady: I still don't understand. How can 'make' set the AST attribute of a match object that doesn't exist yet?
moritz_ masak: if you have side effects, you can cheat with as !return_value variable :-)
TimToady make sets the AST attribute that rides along with the returned Cursor
all grammar methods return Cursors, really 15:00
otherwise the next method wouldn't know what language it's in, or the current position
masak moritz_: yuck :)
TimToady our current macros actually fire off more at reducecheck time 15:01
or an infix, say, would not have its arguments yet 15:02
moritz_ it would have its arguments's AST, no?
TimToady no
<infix> only matches the infix operator itself
an infix can set a reducecheck that sees the infixes arguments
but that's called from within the operator precedence parser 15:03
so macro infix:<> really needs to run at that moment
sorear "Current" macros? 15:04
Does that mean S06, or am I not being as pioneering as I think I am?
TimToady currently specced
nobody's implemented them yet
macros were the *last* thing on pugs's roadmap 15:05
but I've been mistakenly thinking that a user's "macro infix:<op>" translates directly to a grammar's "token infix:sym<op>", but that's not quite so 15:07
it needs that to parse the infix, but it needs something like a reducecheck to manage the arguments
15:08 plobsing joined
sorear I'm implementing reader macros, not tree macros 15:10
TimToady does that mean "textual" vs "hygienic"?
I'm not familiar with your terminology
sorear classic lisps have two kinds of macros 15:11
TimToady what are you planning to return, a string to be reparsed, or an AST
sorear reader macros are keyed on the lookahead character - ie they augment a protoregex - they parse (some stuff) and return an AST
15:12 gurjeet left
TimToady and tree macros are for AST transformations? 15:12
sorear tree macros exist in ordinary lookup scopes and don't affect parsing at all, but are called later in translation to rewrite a subtree of the parse
15:12 gurjeet joined 15:13 kst left, k23z__ left
TimToady well, lisp kinda has it easy in the parsing department, generally 15:13
15:14 kst joined
sorear yes 15:14
TimToady so I guess what I'm saying, in those terms, is that what the user thinks of as a simple macro has aspects of both reader macro and tree macro, to interact with OPP successfully
sorear I'm not concerning myself with anything like a reducecheck, I mean 15:15
TimToady reducecheck being a spot to call a tree macro, essentially
sorear good: I've gotten my macro system to stop crashing. bad: it should be crashing in a different way, but isn't 15:16
TimToady well, I'm sayin' that to do successful reader macros in Perl 6, you probably have to be able to fire off a tree macro later, since the reader for infix is not supposed to look for arguments, to the first approximation
lisp gets around this by mostly not having infix operators :) 15:17
sorear \o/ MACROS WORK. 15:18
TimToady then I'll have to break them. :)
we wouldn't want jnthn++ and pmichaud++ to feel like they're in an exclusive club now... 15:19
moritz_ waits for a timtoadybug in rt
TimToady has lots of bugs, but nobody's offering to debug them for me...
but \o/ too, FSDO \o/ :) 15:20
masak sorear: \o/
and this now works in a branch in Yapsi: gist.github.com/386409
\o/ 15:21
walk &
dalek psi: a6ba93b | masak++ | yapsi:
[yapsi] make target really case-insensitive
sorear nqp: foo if 0; 15:22
p6eval nqp: ( no output ) 15:23
sorear nqp: foo if 1;
p6eval nqp: ( no output )
moritz_ nqp: foo() if 1
p6eval nqp: OUTPUT«Could not find non-existent sub foo␤current instr.: '_block11' pc 0 (EVAL_1:6)␤»
TimToady sorear: how do your macros interact with grammatical categories?
sorear macros can be added to any protoregex in the rakudo grammar 15:24
I've been testing with term:<foo>
TimToady e.g. can you do a '.WHAT' macro that is only recognized in postfix position?
sorear maybe
it would have to go on dotty, I think 15:25
TimToady well, terms are easy, so that's a good place to start. :)
but even prefixes and postfixes have to worry about arguments, or at least provide some kind placeholders in the AST for them
maybe that's a viable approach, and a generic reducecheck just pokes the args into the right holes 15:26
15:26 justatheory joined
TimToady doesn't work if you want to examine/transform the arg ASTs though 15:26
sorear also, macros can't be defined in the setting 15:27
TimToady let me be clear that it is a good thing that you are working on this, even if it does cause spec changes :)
I haven't attempted macros in STD yet because I don't actually have a way to eval an AST yet, so your experience is certainly pioneering in that sense. 15:29
sorear nqp: sub foo (*@x) { say(+@x); }; foo("z", |(1 ?? <a b> !! <c>))
p6eval nqp: OUTPUT«3␤»
sorear nqp: sub foo (*@x) { say(+@x); }; foo("z", |(0 ?? <a b> !! <c>))
p6eval nqp: OUTPUT«flattened parameters must be a hash or array␤current instr.: '_block11' pc 0 (EVAL_1:5)␤»
sorear nqp: sub foo (*@x) { say(+@x); }; foo("z", |(0 ?? <a b> !! <c d e>))
p6eval nqp: OUTPUT«4␤»
sorear nqp: say(pir::typeof__SP(<>)) 15:30
p6eval nqp: OUTPUT«String␤»
sorear nqp: say(pir::typeof__SP([]))
p6eval nqp: OUTPUT«ResizablePMCArray␤»
moritz_ TimToady++ # for mostly not using backticks Perl 6 - now can I delimit Perl 6 code with `...` in my custom slide show builder
arnsholt .u ā 15:32
phenny U+0101 LATIN SMALL LETTER A WITH MACRON (ā)
15:32 Trashlord left
arnsholt .u ṇ 15:33
phenny U+1E47 LATIN SMALL LETTER N WITH DOT BELOW (ṇ)
15:39 kst left
masak sorear++ # pioneering macros 15:40
15:40 kst joined
moritz_ btw I'm developing my Perl 6 talk and the software to render it in parallel at github.com/moritz/perltalk 15:40
(the talk is German, though) 15:41
masak looks cute. 15:43
the line `swap(my $x = 1, my $y = 3);` is way trippy :P 15:44
moritz_: mismatched { on line 145. 15:45
and copy-pasted to line 155.
moritz_ thanks 15:47
15:48 k23z__ joined 15:50 dju joined
sorear My current patch is only 76 insertions 15:57
moritz_ always loves it when a patch is insertions-only 15:58
it feels the software was extensible enough to allow adding features without removing or changing existing code
sorear I actually prefer deletion-only patches
moritz_ maybe it's a stupid sentiment
sorear: well, those are even better, but rare :-) 15:59
sorear Especially when they fix bugs or add features
16:00 tri1 joined
pugssvn r30533 | lwall++ | [S12] delete self:sort darling 16:07
masak \o/ 16:08
moritz_ another deletion-only patch (apart from updating that stupid Version marker) 16:09
16:11 dual joined
masak uses $obj.*method() for the first time 16:13
sorear ok, I've screwed up scoping somewhere 16:19
macro bodies cannot see the SETTING 16:20
diakopter oh; who fixed dalek to show yapsi
finanalyst rakudo: class A { has $.a; has $.b }; my A $x.=new(:a(2),:b(3)); say $x.^attributes 16:21
p6eval rakudo c4857a: ( no output )
moritz_ that's not a long list.
16:21 fridim left
finanalyst i am trying to list the attributes of a class 16:21
masak diakopter: you did... :)
finanalyst can any one help? 16:22
JimmyZ rakudo: Date.^attr.say; 16:23
p6eval rakudo c4857a: OUTPUT«Method 'attr' not found for invocant of class ''␤current instr.: '!dispatch_.^' pc 410 (src/glue/dispatch.pir:100)␤»
moritz_ rakudo: say +Date.^attributes
p6eval rakudo c4857a: OUTPUT«12␤»
moritz_ rakudo: .say for Date.^attributes
JimmyZ rakudo: Date.^attributes.say;
p6eval rakudo c4857a: OUTPUT«Method 'say' not found for invocant of class 'Attribute'␤current instr.: '_block51' pc 373 (EVAL_1:152)␤»
rakudo c4857a: ( no output )
moritz_ rakudo: say "$_" for Date.^attributes 16:24
p6eval rakudo c4857a: OUTPUT«get_string() not implemented in class 'Attribute'␤current instr.: '_block51' pc 373 (EVAL_1:152)␤»
JimmyZ rakudo: say ~Date.^attributes;
moritz_ rakudo: say $_.^methods for Date.^attributes
masak rakudo: class A { has $.a; has $.b }; A.^attributes>>.name.perl.say
p6eval rakudo c4857a: OUTPUT«get_string() not implemented in class 'Attribute'␤current instr.: 'perl6;Iterable;Str' pc 453043 (src/gen/core.pir:59265)␤»
rakudo c4857a: OUTPUT«Method 'methods' not found for invocant of class ''␤current instr.: '!dispatch_.^' pc 410 (src/glue/dispatch.pir:100)␤»
rakudo c4857a: OUTPUT«("\$!a", "\$!b", "\$!a", "\$!b", "\$!a", "\$!b")␤»
masak finanalyst: that works.
moritz_ "works"
masak :)
moritz_ have you actually looked at the output?
JimmyZ rakudo: say Date.^attributes>>.name.say; 16:25
masak it's... interesting.
p6eval rakudo c4857a: OUTPUT«$!year$!month$!day$!daycount$!year$!month$!day$!daycount$!year$!month$!day$!daycount␤1␤»
sorear TimToady: One interesting question is, how should quasiquoting interact with parse-time side effects?
moritz_ oh, that looks much better
masak it's... comprehensive...
JimmyZ rakudo: say Date.^attributes>>.name.perl.say;
p6eval rakudo c4857a: OUTPUT«("\$!year", "\$!month", "\$!day", "\$!daycount", "\$!year", "\$!month", "\$!day", "\$!daycount", "\$!year", "\$!month", "\$!day", "\$!daycount")␤1␤»
sorear TimToady: I speak of stuff like 'has'
masak why does it repeat itself?
moritz_ no idea
masak can I report it? puhleeze?
moritz_ sure 16:26
masak \o/
masak reports
JimmyZ rakudo: say +Date.^attributes;
p6eval rakudo c4857a: OUTPUT«12␤»
masak ...wrong by a factor of 3 or so... :P
JimmyZ rakudo: class A { has $.a; has $.b }; ++A.^attributes
p6eval rakudo c4857a: OUTPUT«Method 'succ' not found for invocant of class 'Parcel'␤current instr.: '&prefix:<++>' pc 555891 (src/gen/core.pir:95983)␤»
moritz_ but it's consistent with listing each thrice
JimmyZ rakudo: class A { has $.a; has $.b }; +A.^attributes
p6eval rakudo c4857a: ( no output )
JimmyZ rakudo: class A { has $.a; has $.b }; +A.^attributes.say 16:27
p6eval rakudo c4857a: OUTPUT«Use of uninitalized value in numeric context␤»
JimmyZ rakudo: class A { has $.a; has $.b }; say +A.^attributes
p6eval rakudo c4857a: OUTPUT«6␤»
finanalyst suppose i instantiate a class, how do I get the current values of the attributes? 16:28
JimmyZ rakudo: class A { has $.a = 2; has $.b }; say (new A).a
p6eval rakudo c4857a: OUTPUT«Unsupported use of C++ constructor syntax; in Perl 6 please use method call syntax at line 11, near ").a"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
JimmyZ rakudo: class A { has $.a = 2; has $.b }; say (new A)->a
p6eval rakudo c4857a: OUTPUT«Unsupported use of C++ constructor syntax; in Perl 6 please use method call syntax at line 11, near ")->a"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
moritz_ finanalyst: by using an accessor
16:29 christine left
moritz_ finanalyst: obtaining the value via introspection is neither specced nor implemented 16:29
JimmyZ rakudo: class A { has $.a = 2; has $.b }; say (new A()).a
p6eval rakudo c4857a: OUTPUT«Unsupported use of C++ constructor syntax; in Perl 6 please use method call syntax at line 11, near "()).a"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
moritz_ rakudo++ # good error messag
JimmyZ rakudo: class A { has $.a = 2; has $.b }; say (new A()).a()
p6eval rakudo c4857a: OUTPUT«Unsupported use of C++ constructor syntax; in Perl 6 please use method call syntax at line 11, near "()).a()"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
TimToady sorear: just off the cuff, quasiquoted code has to be considered generic rather like a role body
masak finanalyst: what is it you're wanting to do? 16:30
moritz_ JimmyZ: did you bother to read the error message?
JimmyZ Yeah
finanalyst i want to see what the current variables of an instantiate class are
masak yeah, you said that.
why?
finanalyst tracing an error
JimmyZ rakudo: class A { has $.a = 2; has $.b }; say (new A()).WHAT 16:31
p6eval rakudo c4857a: OUTPUT«Unsupported use of C++ constructor syntax; in Perl 6 please use method call syntax at line 11, near "()).WHAT"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
JimmyZ rakudo: class A { has $.a = 2; has $.b }; say A.WHAT
masak finanalyst: why do you need to do it with introspection, rather than manually?
finanalyst there are a lot of attributes and putting them in a list seems clunky
p6eval rakudo c4857a: OUTPUT«A()␤»
masak well, using the above .^attributes meta-method, compensating for the triple-bug, and then using eval somehow should work. 16:33
finanalyst rakudo: class B {has $.a; has $.b; has $c; method stat { for $.a, $.b, $.c { .say }}; my B $x.=new(:a(1),:b(2),:c(3)); $x.stat
p6eval rakudo c4857a: OUTPUT«Unable to parse blockoid, couldn't find final '}' at line 11␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
finanalyst rakudo: class B {has $.a; has $.b; has $c; method stat { for $.a, $.b, $.c { .say }}}; my B $x.=new(:a(1),:b(2),:c(3)); $x.stat 16:34
p6eval rakudo c4857a: OUTPUT«Method 'c' not found for invocant of class 'B'␤current instr.: 'perl6;B;stat' pc 444 (EVAL_1:180)␤»
finanalyst rakudo: class B {has $.a; has $.b; has $c; method stat() { for $.a, $.b, $.c { .say }}}; my B $x.=new(:a(1),:b(2),:c(3)); $x.stat 16:35
p6eval rakudo c4857a: OUTPUT«Method 'c' not found for invocant of class 'B'␤current instr.: 'perl6;B;stat' pc 444 (EVAL_1:180)␤»
masak missing dot on the $.c attr.
finanalyst rakudo: class B {has $.a; has $.b; has $.c; method stat() { for $.a, $.b, $.c { .say }}}; my B $x.=new(:a(1),:b(2),:c(3)); $x.stat
p6eval rakudo c4857a: OUTPUT«1␤2␤3␤»
masak maybe we should give people an allotted number of p6eval calls per day, so they'll check their spelling better. :P
finanalyst sory 16:36
:)
masak no prob :)
16:36 christine joined
masak today I'm really pot calling kettle black saying that. :) 16:36
finanalyst well i was looking for a neater way of doing the .stat method 16:37
dalek ok: 1b7c0ce | moritz++ | bin/book-to-latex:
[latex] use T1 font encoding, without it Coke++ reported build errors on Mac OS X (ticket #1)
16:38
ok: 2fb5e20 | moritz++ | README:
[README] document that you need the "bera" font to build the book
masak rakudo: my $a = q[has $.a]; class A { eval($a) }; say A.^attributes # nope, that didn't work... :)
p6eval rakudo c4857a: OUTPUT«␤»
16:41 Truewar left
dalek ok: db59e3e | Coke++ | src/preface.pod:
monospace some items.
16:44
ok: 0ea942a | Coke++ | (2 files):
Merge branch 'master' of github.com:perl6/book
masak snarkyboojum: ping 16:46
diakopter jnthn: Jack Daniels milkshake?
16:50 BrowserUk joined 16:51 p6eval left, p6eval joined, BrowserUk left 16:52 pmurias joined
pmurias diakopter: hi 16:52
diakopter hi 16:53
pmurias how difficult would it be to have access to lexicals by name in perlesque? would it cause a performance penalty? 16:54
diakopter how would that be done 16:55
I mean, how would it look in code 16:56
pmurias where are the lexicals stored in perlesque?
moritz_ my $foo = 3; my $var = 'foo'; say $::($var) # 3 16:57
something like this=
diakopter oh
not too hard; basically it'd cause a case/switch to be emitted 16:58
switch/case I mean
sigh.
masak given/when :) 16:59
diakopter technically, neither; it's just a CIL "switch" statement, and there aren't "case" statements; it's just a bunch of conditions and gotos 17:00
actually for strings, it's not even a switch statement
only for a dense zero-indexed array of ints does it get transformed to a jump table
masak *nod* 17:01
pmurias diakopter: how should mildew determine where Sprixel is localted? 17:03
diakopter I dunno.. 17:04
17:04 sorear left
pmurias env variable could work on linux... 17:04
diakopter however it wants? it could always svn co it if it's not there, like --gen-parrot except --gen-perlesque
17:05 sorear joined
diakopter obviously svn and mono are dependencies of that 17:05
JimmyZ rakudo: my $a; say $a[0]; say $a[0];
p6eval rakudo c4857a: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class ''␤current instr.: '!postcircumfix:<[ ]>' pc 10885 (src/builtins/Role.pir:73)␤»
JimmyZ rakudo: my Array $a; say $a[0]; say $a[0];
p6eval rakudo c4857a: OUTPUT«␤␤»
JimmyZ rakudo: my Array $a; say $a[3]; say $a[3]; 17:06
p6eval rakudo c4857a: OUTPUT«␤␤»
JimmyZ rakudo: my Array $a; $a[3]; say $a[3];
p6eval rakudo c4857a: OUTPUT«␤»
JimmyZ rakudo: my Array $a; my $b = $a[3]; say $a[3];
p6eval rakudo c4857a: OUTPUT«␤»
diakopter rakudo: my Array of Array of Array $a; say $a[3]; say $a[3];
p6eval rakudo c4857a: OUTPUT«No applicable candidates found to dispatch to for 'postcircumfix:<[ ]>'. Available candidates are:␤:(Mu : Int $i;; *%_)␤:(Mu : Block $b;; *%_)␤:(Mu : !whatever_dispatch_helper ;; *%_)␤␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
diakopter rakudo: my Array of Array $a; say $a[3]; say $a[3]; 17:07
17:07 pmurias left
p6eval rakudo c4857a: OUTPUT«No applicable candidates found to dispatch to for 'postcircumfix:<[ ]>'. Available candidates are:␤:(Mu : Int $i;; *%_)␤:(Mu : Block $b;; *%_)␤:(Mu : !whatever_dispatch_helper ;; *%_)␤␤current instr.: '_block14' pc 29 (EVAL_1:0)␤» 17:07
moritz_ rakudo: my Array @a; say @a[0] 17:09
p6eval rakudo c4857a: OUTPUT«get_pmc_keyed() not implemented in class ''␤current instr.: 'perl6;Positional[::T];postcircumfix:<[ ]>' pc 10705 (src/metamodel/GrammarHOW.pir:41)␤»
17:09 tri2 joined, tri1 left
diakopter phenny: tell pmurias I mean, since it takes less than 10 seconds to build Sprixel.exe .... --gen-perlesque would go quite quickly :) 17:13
phenny diakopter: I'll pass that on when pmurias is around.
17:14 M_o_C left
JimmyZ rakudo: my Array $a = [1]; my $b = $a[3]; say $a[3]; 17:14
p6eval rakudo c4857a: OUTPUT«␤»
JimmyZ rakudo: my Array @a = [1]; my $b = @a[3]; say @a[3]; 17:15
p6eval rakudo c4857a: OUTPUT«get_pmc_keyed() not implemented in class ''␤current instr.: 'perl6;Positional[::T];postcircumfix:<[ ]>' pc 10705 (src/metamodel/GrammarHOW.pir:41)␤»
JimmyZ rakudo: my Array @a = [1]; my $b = @a[1]; say @a[1];
p6eval rakudo c4857a: OUTPUT«get_pmc_keyed() not implemented in class ''␤current instr.: 'perl6;Positional[::T];postcircumfix:<[ ]>' pc 10705 (src/metamodel/GrammarHOW.pir:41)␤»
masak hm.
JimmyZ parrot bug? 17:16
masak JimmyZ: when you do `my Array @a`, you get an Array typed as containing only Arrays.
JimmyZ rakudo: my Array $a = [1]; my $b = $a[3]; say $a[3];
p6eval rakudo c4857a: OUTPUT«␤»
masak that doesn't seem to be related to the error you get, though.
moritz_ masak: yes, the error should be a type mismatch 17:17
JimmyZ rakudo: my Array $a = [1]; my $b = $a[0]; say $a[0];
p6eval rakudo c4857a: OUTPUT«1␤»
JimmyZ rakudo: my Hash $a = [1]; my $b = $a[0]; say $a[0];
p6eval rakudo c4857a: OUTPUT«Type check failed for assignment␤current instr.: '&die' pc 17391 (src/builtins/Junction.pir:410)␤»
JimmyZ good ninght 17:19
17:19 JimmyZ left 17:20 tri1 joined 17:21 tri2 left
masak good night, 卓明亮! 17:24
17:26 tri1 left 17:28 plobsing left 17:31 envi^home left 17:34 tri1 joined
dalek psi: 830b6a2 | masak++ | lib/Yapsi.pm:
[Yapsi] expose the runtime state a bit more

in order to register the state at each tick. The four calls to self.*tick (beginning of program, after assignment, after binding, after call to &say) are in a way arbitrary, but it's the best guess we have right now as to what a debugger needs. The reason we use a
  * rather than a ? in the call is so that many deriving classes will be able
to have their .tick method invoked. Will be interesting to see if that distinction will actually be important to someone.
17:38
masak phenny: tell snarkyboojum that Yapsi is now, finally, ready for Tardis. here's a proof-of-concept: gist.github.com/386512
phenny masak: I'll pass that on when snarkyboojum is around.
17:40 tri2 joined 17:41 tri1 left 17:45 tri2 left, tri1 joined 17:58 tri1 left 18:02 TiMBuS joined
finanalyst rakudo: my $s="a\tb\tc"; my @a= $s.split("\t")[1 .. *-1]; .say for @a 18:04
p6eval rakudo c4857a: ( no output )
finanalyst alpha: my $s="a\tb\tc"; my @a= $s.split("\t")[1 .. *-1]; .say for @a
p6eval alpha 30e0ed: OUTPUT«b␤c␤»
18:08 wknight8111 left 18:13 mikehh_ joined 18:14 mikehh left 18:17 M_o_C joined
masak time to nom. will be back later tonight to release Yapsi. :) 18:19
18:19 masak left 18:21 M_o_C left 18:25 k23z__ left 18:35 sorear left 18:36 sorear joined 18:41 Minimiscience joined 18:42 M_o_C joined
colomon finanalyst: I'm pretty sure [1 .. * - 1] is a non-starter. 18:50
finanalyst has it been eliminated from spec? 18:51
colomon was it ever in the spec?
finanalyst it used to work
* in [] context was the same as +@ 18:52
colomon still is, except it's not a context.
18:52 kst left
finanalyst although in most case +@array is possible, the problem occurs when you dont know the name of the array 18:53
colomon but I don't think you can combine that with a Range.
18:53 kst joined
finanalyst 'context' in loose meaning of word 18:53
colomon (I could be wrong, however.)
finanalyst I am not suggesting any design ideas. More a question of how to get the last element in an array 18:54
colomon I guess it could be possible that the whatever curry is somehow passed to the Range, but that sounds like a lot of magic.
oh!
I should have seen that right away, apologies. 18:55
if you want to get everything but the first element, it's [1..*]
finanalyst you have lost me already
colomon except that doesn't work in master yet.
if you just want to get the last element [*-1] should work.
finanalyst in alpha you could not use [1..*] 18:56
may be [ 1 ..^ * ]
colomon [1..*] is correct, I'm pretty sure. 18:57
There's two different uses of * overlapping here.
finanalyst alpha: my @x=1,2,3,4; .say for @x[1..*] 18:58
p6eval alpha 30e0ed: OUTPUT«2␤3␤4␤Use of uninitialized value␤␤»
18:58 Metamucil left
finanalyst alpha: my @x=1,2,3,4; .say for @x[1..*-1] 18:58
p6eval alpha 30e0ed: OUTPUT«2␤3␤4␤»
finanalyst colomon: the uninitialised slot is why [ 1 .. *-1] is needed 18:59
colomon finanalyst: no
alpha is wrong here.
finanalyst ah.
much neater of course without -1
colomon basically (as I understand it) there are two different things going on here with *. 19:01
when you say [*-1], what happens is it generates a block of code which looks something like -> $a { $a - 1 }
then the [ ] passes in the length of the array as $a.
but when you're doing slices [1..*] is supposed to mean, "give me all the elements starting with one and ending when we run out." 19:02
likewise if you say [*], that just means "all the elements".
finanalyst so alpha got it wrong because it wasnt lazy? 19:03
colomon I think it was just an alpha bug
19:03 M_o_C left
finanalyst thanx for the explanation 19:03
colomon I guess it is possible that [1 .. *-1] might automatically do the right thing. But if it does, it's because 1 .. *-1 will somehow make a function that does -> $a { 1 .. ($a - 1) } 19:04
alpha: my &a = 1 .. (*-1); say &a; 19:06
p6eval alpha 30e0ed: OUTPUT«!whatever_closure␤»
colomon ah.
so it actually was doing the right thing there. alpha++
19:07 pmurias joined
colomon alpha: my &a = 1 .. (*-1); say &a(10); 19:07
p6eval alpha 30e0ed: OUTPUT«123456789␤»
pmurias diakopter: rehi
phenny pmurias: 17:13Z <diakopter> tell pmurias I mean, since it takes less than 10 seconds to build Sprixel.exe .... --gen-perlesque would go quite quickly :)
diakopter pmurias: hi
pmurias: I'm fixing subs-as-variables, which already bitrotted
colomon finanalyst: but [1..*] is supposed to work, definitely.
finanalyst but it doesnt yet 19:08
colomon doesn't want to think about the level of complexity involved in getting 1 .. *-1 to automatically do the right thing...
pmurias diakopter: write some tests to make sure they won't bitrot again
diakopter pmurias: :P 19:16
sigh. I just realized I *must* do the per-callsite return-slot thing. :| 19:18
diakopter gets to it. 19:19
19:24 BrowserUk joined, BrowserUk left 19:26 finanalyst left 19:27 wolverian left
pugssvn r30534 | pmurias++ | [mildew] submolds in m0ld 19:28
r30535 | pmurias++ | [mildew] m0ld supports comments and call with no arguments
r30536 | pmurias++ | [mildew] -Bperlesque
pmurias diakopter: what could be interesting would be to see what does it take to get mildew to run on your box (perlesque backend only with SMOP etc.) 19:30
19:31 rv2733 left
lue o hai! I was wondering if (other than the spec of course) there is a place where I can learn about P6 classes 19:37
I've read the spec, but something more tutorial-oriented would be nice :) 19:38
moritz_ lue: like, the book? 19:39
Minimiscience perlgeek.de/blog-en/perl-5-to-6/05-...asses.html and others on that site are the only Perl 6 class tutorials I know of. 19:40
lue what book? I've checked perl6.org, nothing _too_ useful there :)
moritz_ github.com/perl6/book/blob/master/s...bjects.pod
lue dankon! 19:42
19:42 mce_ro joined
diakopter pmurias: one change starting today is that every subroutines (named or anonymous) must declare each's return type up-front 19:43
(sorry :()
lue really, the part where I'm stumbling is the purpose of bless. I don't think I've ever had to use something like it in, say, Python 3. (I could be wrong of course)
from what I know, the purpose of bless() is to call that object's BUILD method. I still can't quite see why I'd want to use bless() though. 19:47
(I can post what I'm trying to do to lisppaste if that would help)
Su-Shee lue: the last perl 6 class I wrote didn't require blessing. 19:48
19:48 colomon left
lue what would you use it for though? 19:48
Su-Shee I wouldn't. I use it in perl 5.
I didn't even know that there still _is_ bless. 19:49
lue what would you use bless for in P5 then? I know P5 hasn't got expansive class support.
pmurias diakopter: that's not a problem for me
lue: MooseX::Declare is pretty good 19:50
Su-Shee lue: that you'll find in any perl book explained in detail. what are you asking exactly?
19:51 mikehh_ is now known as mikehh
diakopter Su-Shee: lue was trying to understand Perl 6 bless 19:51
oh.
Su-Shee diakopter: there still is a bless?
diakopter lue: yes :) nopaste your code please
moritz_ Su-Shee: yes
diakopter Su-Shee: apparently, according to github.com/perl6/book/blob/master/s...bjects.pod
bkeeler bless associates a reference with a package so that it knows where to find methods when you call them
moritz_ perlgeek.de/blog-en/perl-6/object-c...ation.html
Su-Shee ok, then I have absolutely no idea what bless in p6 is for. 19:52
lue it's Python code, and I'm trying to convert to P6. I need to know of classes first though (just a second)
bkeeler You roll your own constructors in P5, something like "sub new { my $package = shift; bless {} => $package }"
diakopter github.com/perl6/book/blob/master/s...bjects.pod is confusing
moritz_ diakopter: how so?
diakopter "Perl 6 constructors actually create of the object themselves"
19:52 sorear left
bkeeler It still exists in P6, but the metamodel provides a default constructor so you don't need to muck around with bless 19:52
diakopter moritz_: the Constructors section says "The example's constructor ..." 19:53
but I don't see a constructor in an example
oh. I have to view it in raw :) 19:54
moritz_ diakopter: ah, github doesn't render PseudoPod very well
lisppaste3 lue pasted "Incomplete NES cpu class (python)" at paste.lisp.org/display/98645
diakopter moritz_: also, "is that rather than setting up state on a somehow
.. already magically created object"
..
Su-Shee ok, I don't understand the explanation in the book as well.
Khisanth Su-Shee: but is there a damn()? :)
diakopter doesn't seem clear when there's a "self" keyword in the new method 19:55
lue there you are, that's it. :)
moritz_ did you find my blog post clearer?
Su-Shee lue: anyway. I've never needed a p6 bless until now as I didn't even know that it existed. I already abandoned bless mentally.
lue mortiz_: yes. As I said, it's really only bless() I was wondering about. Glad I probably won't need to use it :) 19:56
diakopter moritz_: no, not really 19:57
b/c "p6opaque" is not explained
moritz_ then I don't write diakopter-compatbile docs, it seems
19:58 sorear joined
Su-Shee I don't get it as well. I could use it, but I don't understand its usefulness and purpose. 19:58
diakopter I suspect that's not the problem. I think the concepts are complicated. 19:59
moritz_ doesn't understand all that confusion
somehow new objects need to be created 20:00
that's what bless does
diakopter can there be multiple new methods with different signatures?
moritz_ diakopter: sure - they can be multi methods
Su-Shee moritz_: I thought that's what I have new for which is builtin? why would I need bless then?
lue
.oO(wow, looking back, I can't believe I wrote all that at one time: paste.lisp.org/display/98645)
20:01
diakopter how does one avoid parent class(es)' BUILD methods from also calling bless?
moritz_ diakopter: bless calls BUILD, not the other way round
TimToady BUILD methods never call bless
moritz_ diakopter: if a BULID method calls bless, it's b0rked
TimToady bless actually calls BUILDALL, which calls all appropriate BUILDs 20:02
similary for DESTROYALL
moritz_ ... as I explained in the blog post, if I remember correctly
TimToady *larly
diakopter ok; I couldn't make it past the opaque mention of p6opaque 20:03
moritz_ diakopter: how do you ever manage to read parts of the spec if you don's skip things you don't understand? :-)
diakopter where is bless' signature described
TimToady Khisanth: 'damn' is the name of the garbage collector
lue So, just plug in methods/submethods appropriately, and come back when it breaks? :) 20:05
diakopter moritz_: did you notice the book typo I quoted above?
TimToady S12:736
moritz_ diakopter: yes
diakopter: I actually wanted to push a change, but forgot to enter the password
TimToady bbl &
20:07 masak joined
Su-Shee lue: a handful of accessors usally is nice as well. and then people like me are usally done with their classes. ;) 20:07
masak ahoy, perl6beings!
masak enters Yapsi release engineering mode
lue ah yes, must allow people to touch my classes ;) [lookee at paste.lisp.org/display/98645 and see if there's any other advice you can give me]
masak: ohai! 20:08
masak olue!
lue enters TARDIS anticipation mode
masak lue: did you see the proof-of-concept gist I pasted earlier?
lue yes, looked at it. that's why I'm suddenly interested in Yapsi ;) 20:09
masak Tardis has been the main driver of Yapsi development for the past month, just to get to this point :) 20:10
next month will probably be more sigmund-oriented.
lue Tardis will be the only interactive debugger I'll ever use. (I'm assuming it keeps the name then?) 20:11
masak yeah, I haven't seen any better name on the horizon :) 20:12
20:13 Minimiscience left
lue what does it stand for? I still like something along the lines of Time-Augmented Realistic Debugging In Style (or something of the sort) 20:13
masak lue: see the README. 20:14
lue: are you satisfied with the explanations you got about bless? otherwise I could have a go. I use bless quite often. 20:17
Su-Shee and me idiot thought the whole point was not to have doing bless anymore.. ;) 20:18
20:18 kst left
masak Su-Shee: in the common case, you don't. 20:19
moritz_ Su-Shee: having the object creation facility in bless and not new() makes it easy to hide the built-in new()
20:19 kst joined
masak programming is like an onion, it has layers. :) 20:19
lue check out my lisppaste and tell me if I would need it: paste.lisp.org/display/98645 20:20
masak checks
dalek ok: 8e36bf7 | moritz++ | src/classes-and-objects.pod:
grammar fix pointed out by diakopter++
lue so, bless is to let everybody know your package exists and where it is.
Su-Shee moritz_: so far I already understood. I don't understand what's it good for. but I'm not the audience anyway. 20:21
masak lue: er, that's python, as far as I can see.
also, it triggered my tl;dr filter.
sorry. :/
Su-Shee lue: is that assembler in python? ;)
lue yes, it's python. I'm porting to Perl 6 20:22
that thing is the reason why I switched: refereneces (@a := @b) and switch statements 20:23
Su-Shee: it's a 2A03 cpu emulator :)
Su-Shee
.oO(so essentially yes.. ;)
lue all the #NOTE WARNING CAUTION stuff is because kate highlights those kinds of words as bold red, and I wanted them to stand out. 20:24
.oO(Practical Emulation of Rudimentary Languages)
20:25
dalek psi: c92d82d | masak++ | README:
[README] updated
20:26
20:26 colomon joined 20:29 stepnem joined
moritz_ rakudo: / \w+ ** \. / 20:33
p6eval rakudo c4857a: OUTPUT«Method 'panic' not found for invocant of class 'Regex;Match'␤current instr.: 'perl6;Regex;P6Regex;Actions;_block554' pc 29649 (ext/nqp-rx/src/stage0/P6Regex-s0.pir:8431)␤»
moritz_ rakudo: / a+ +/ 20:34
p6eval rakudo c4857a: OUTPUT«Method 'panic' not found for invocant of class 'Regex;Match'␤current instr.: 'perl6;Regex;P6Regex;Actions;_block554' pc 29649 (ext/nqp-rx/src/stage0/P6Regex-s0.pir:8431)␤»
moritz_ masak: care to submit?
masak submits rakudobug
moritz_ error while trying to produce an error message, it seems
masak how meta.
why does the first one try to produce an error message? 20:35
it looks alright to me.
moritz_ because it's a quantifier on a quantifier
masak ...and?
alpha: / \w+ ** \. /; say "alive" 20:36
p6eval alpha 30e0ed: OUTPUT«alive␤»
masak std: / \w+ ** \. /
moritz_ std: / \w+ ** \. /
p6eval std 30536: OUTPUT«===SORRY!===␤quantifier quantifies nothing at /tmp/qX02jGN3T7 line 1:␤------> / \w+ ** \. ⏏/␤Check failed␤FAILED 00:01 111m␤»
std 30536: OUTPUT«===SORRY!===␤quantifier quantifies nothing at /tmp/Aj8Op1qPtv line 1:␤------> / \w+ ** \. ⏏/␤Check failed␤FAILED 00:01 108m␤»
masak chooses not to believe STD in this case
a ** quantifier on a + quantifier is totally OK.
I've even used it at times.
the \w+ effectively produces a higher-order term, which can be quantified. 20:37
jnthn Evening hackathon! :-)
masak \o/
colomon I've got ten free minutes before I've got to start cooking dinner....
masak jnthn: Yapsi release imminent!
colomon :)
\o/ 20:38
pmurias TimToady: any ideas how a CPANised module should use STD?
dalek psi: b9ccde1 | masak++ | doc/ChangeLog:
[ChangeLog] added changes for May release
20:38 Su-Shee left
jnthn masak: Yay :-) 20:39
BTW, Iceland is awesome. :-)
colomon \o/
masak how was Eyafjallajökull? 20:40
jnthn I got a look at That Volcano (from a distance) today.
diakopter pmurias: depend on svn and check it out? :P
pmurias jnthn: what are you doing on Iceland?
jnthn pmurias: Relaxing, and occasionally doing Perl 6 things.
And drinking beer.
lue remembers his favorite (american) morning radio show selling "I Hate Iceland" tshirts 20:41
jnthn Overall, just a week of fun. :-)
pmurias jnthn: did you meet with avar? 20:42
20:42 Guest62733 left 20:48 BrowserUk joined 20:55 BrowserUk left 20:56 colomon left, meppl left 21:00 orafu left 21:01 orafu joined 21:04 wolverian joined 21:21 nadim left
lue grr... You know that measurement of console screens back in ye olde days? 80xtwenty-something. I can remember 80, but what was the other dimension? 21:23
masak 25.
moritz_ 24 21:25
well, depends I think
dalek psi: 9a0a096 | masak++ | doc/announce/2010.05:
[doc/announce/2010.05] added May announcement
lue I first got it from when the Infocom setup disks ask for your resolution :)
masak I'll be happy to receive comments on the release announcement. 21:26
will release in a few minutes. :)
moritz_ reads
21:26 pmurias left
lue +Yapsi is an 'official and complete' Perl 6 release. It's official because we 21:27
13
+have little labels with the word 'official' on them that we glue to each
14
+download that takes off from github. (That much gluing takes a lot of work,
15
+but we think of it as a community service.)
masak we do.
lue (sorry about the weird pasting) that's my favorite line :)
masak :) 21:28
moritz_ likes the Schadenfreude
masak thought you would :) 21:29
moritz_ masak++
masak hokay, going into release mode, then.
lue that looks german and I can't understand it! (Schadenfreude)
masak lue: delight at the misery of others.
lue: 'Schade' means 'hurt', IIUC. 'freude' means 'joy'. 21:30
but IANAG.
lue they sounded familiar (but I was only in Germany until I was 4 or 5)
moritz_ actually Schaden = damage 21:32
masak ah.
wtf Yapsi 2010.04 109 downloads! o.O 21:33
no wonder we had to order more 'official' stickers.
moritz_ :-) 21:34
lue so Yapsi basically takes a shortcut while calling the turtle (er, rakudo) for some help on being an interpreter? 21:35
21:35 nadim joined
s1n masak: by complete, does yapsi pass tests? 21:35
masak s1n: yes. not spectests yet, though.
but we have tests. 21:36
s1n interesting
masak lue: if I understand you correctly, then no.
lue My metaphor was «trying» to say that Yapsi gets help from rakudo to be a perl6 interpreter written in perl6. 21:37
masak should a release announcement go to both p6c and p6l, or just the one?
lue: it does that, yes. and if anything deserves the eponym 'turtle' it's Yapsi.
lue receives -3 Cape of Failed Metaphor
masak lue: you should try it; it's dazzlingly slow :)
lue more than rakudo? Imp(robable|ossible)! 21:38
s1n masak: does yapsi reuse rakudo's built-in's or does it provide its own?
wolverian masak: s/an server/a server/
masak s1n: depends what you mean. there's no way to do 'print' except with 'print', for example. 21:39
wolverian: thanks! saved at the last minute. :)
wolverian is the "SIC seceral" on purpose?
too punny to know. :) 21:40
masak good question. no :)
these fixes will go in post-release, since I've already uploaded the .tar.gz.
but I hadn't sent the announcement yet, so that will look right.
lue rakudo: say "\x26B0 is a coffin, \x26B1 is a funeral urn. Who'd thought those'd be in Unicode?"
p6eval rakudo c4857a: OUTPUT«⚰ is a coffin, ⚱ is a funeral urn. Who'd thought those'd be in Unicode?␤»
masak goes with just p6c, like last time 21:41
s1n masak: does it reuse rakudo's List, for example, or did you write your own?
masak so far, neither.
s1n oh
masak it's complete, not finished :P
s1n lol 21:42
fast and loose with that word
i read "complete" as "feature complete"
masak it is feature complete. 21:43
...for a very restricted set of features.
s1n i don't think that's a good choice of words, very misleading 21:45
masak hm. you might be right. 21:47
people might think it's actually complete...
ah well, announcement's away already. too late to change it. :)
s1n: tell you what. if people turn up and say they expected complete to mean 'complete', they'll get a full refund. 21:49
that way, we get both the branding *and* happy customers! 21:50
lue
.oO(do they get to keep the «OFFICIAL» sticker, ABSOLUTELY FREE!?)
.oO(our gift to you!(?))
21:51
masak heh. chromatic already tweeted about Yapsi being 'official and complete' :) 21:52
and it's getting re-tweets. o.O 21:53
masak hides
lue quick! use these array sigils as covers. If you need more, you can them from twitter! 21:54
can *get* them
21:55 donaldh joined
lue .rpg(masak receives +10 Blanket of Arrays) 21:55
s1n i'd rather have the Socket of Escape :) 21:56
s1n is so glad to be done of coursework 21:57
masak lue: have I mentioned that I'm considering doing a one-month blog experiment this summer, implementing an adventure game in Perl 6?
wolverian masak: zorkesque?
lue yay! I was thinking of a text game about #perl6
Couldn't decide between P6 and Inform though :) 21:58
masak the idea is to take the successes of the Perl 6 Advent Calendar, and do a similar thing in the summer.
getting people involved and taking turns blogging, etc.
lue gives masak +42 ^C
masak question is how to co-ordinate it, though. since things will build on each other in a way the Advent postings mostly didn't. 21:59
lue when would it start? I'd love to help with an adventure game.
masak probably needs a bit more up-front planning.
lue: it starts when someone creates a github repo for it :)
lue masak: if it weren't so slow for me, I'd recommend Bespin
pugssvn r30537 | jnthn++ | [t/spec] Tests for inheritance and role composition involving lexical roles/classes.
jnthn Meh, this connection sucks.
lue if you were thinking of 2+ editing the same file at the same time, that is. 22:00
ohai jnthn o/
masak lue: oh, cool. didn't know about that.
I don't do realtime multiplayer editing often enough. 22:01
lue I don't either, bespin is painfully slow for me :( 22:02
22:02 donaldh left
lue not painful, but not easy-to-use either 22:02
lue gives jnthn +5 (ATK) T1 line
dalek kudo: 78fb4ec | jonathan++ | src/Perl6/Actions.pm:
Fix inheritance and doing of lexical classes / roles.
22:03
kudo: db73c1f | jonathan++ | src/Perl6/Compiler/Package.pm:
Fix declaring multiple lexical classes in a given scope.
masak lue: did you know about svn.pugscode.org/pugs/examples/adve...venture.pl ? 22:04
eternaleye lue: re bespin, there's always Gobby/Kobby/Infinote, or Wave, or the etherpad-based options @ etherpad.org/etherpadsites.html 22:06
The former have the benefit of being native apps, whereas the latter two are AJAX 22:07
22:10 wolv joined
s1n masak: are you really in an optics phd program? 22:10
masak s1n: nope.
s1n oops
moritz_ 22:11
22:11 kfo_ joined
s1n (i always mix your names up lol) 22:11
lue no i did not, masak 22:13
masak I think at one point it worked in Rakudo.
22:14 kfo left, kfo_ is now known as kfo
dalek kudo: a38bf7e | jonathan++ | docs/ROADMAP:
Lexical classes now essentially work and are tested. We'll no doubt find bugs, but I the bulk of the work is done, so move them to completed section of the ROADMAP.
22:14
lue It looks OK, but methinks it could be better (of course)
masak indeed. 22:15
lue I like Inform for this kind of stuff, because it was _made_ for this kind of stuff.
masak still, one has to start somewhere, even with something ambitious.
jnthn That's a "must have" roadmap item knocked off. :-) 22:16
lue If you like, I could relearn Inform (again) and draft an idea for the game.
jnthn++ \o/ :D \o\ /o/ ba-da-da-daaa!
diakopter um, yay. :) 22:17
masak jnthn++
lue: sure. but I guess you are aware that I do plan to use Perl 6 as a platform, not Inform :) 22:18
lue oh, I read that as "The must have roadmap section knocked off"
jnthn lue: If only!
lue masak: of course, it's not much of PoC code if it weren't in P6 :)
22:18 nihiliad left
lue I also have to feel like relearning Inform again. I always learn it for a bit, then forget everything, 22:19
it's worth it to just jump straight to P6.
masak the fact that Inform was made for this type of thing only means that we have to find an angle for the game such that Inform would be a bad fit, and Perl 6 a good one.
lue anything involving file IO is a good start :P 22:21
masak good to know. 22:22
and by that time, we might have binary IO...
dalek meta: r234 | diakopter++ | trunk/Sprixel/ (9 files):
[perlesque] redo a lot about sub declarations, named and anonymous, so that a
lue (I guess online MUD type stuff is theoretically possible in Inform (last I checked), but P6 would obviously be better)
Inform can load modules and images and such, but I don't recall it ever opening any files you want, like the open() command. 22:23
diakopter and, once again, bugs in mono.
22:24 iblechbot left
masak lue: hm. I'm reluctant to go in the MUD direction, at least as a first attempt. 22:24
a MUD is a bit too open-ended to work well as a tutorial.
lue yeah, well, just a thought :) 22:25
lue checks up on inform7 to see what it's not good at 22:27
jnthn will be hackathoning tomorrow :-)
eternaleye lue: masak: Maybe a roguelike? It would involve goodly amounts of file IO to remember and restore levels, and we could make a really neat run-length-encoding sub ;D 22:28
masak eternaleye: interesting.
eternaleye: Tene++ has already started on one, I believe.
eternaleye Ooh, must see...
masak github.com/tene/cutegirls
lue
.oO(nethack!)
eternaleye Hm, it's p5 with some perl6 in via modules 22:29
lue a programming language like Inform 7 seems right up TimToady's alley... 22:31
eternaleye Also, multiplayer may be complicating things too much - most roguelikes are single-player, and turn-based systems tend not to scale well with increased players (one walks away -> hang)
22:31 colomon joined
masak eternaleye: aye. I think single-player is a must. 22:32
dalek meta: r235 | diakopter++ | trunk/Sprixel/src/Grammar/Grammar.cs:
[perlesque] try to fix usage on mono.
eternaleye Well, since use :from<p5> is working now, we could use the p5 ncurses bindings 22:33
masak eternaleye: not sure what Tene's long-term plans were. maybe he intended to port it all to Perl 6 when possible.
eternaleye masak: Could be
lue can't wait for the day you can use the qt libraries
eternaleye That would be very shiny indeed
22:35 plobsing joined
lue one idea would be to set up a system where you could download extra areas (a more dynamic game) 22:37
of course, that departs from your standard Infocom text game :)
masak maybe the place to start is to brainstorm over a 'conceptual design'... making the text-adventure game 'artwork' up front. 22:44
with a solid core idea, it's easier to build towards a goal. 22:45
lue agreed
I wonder when/where to brainstorm, though 22:48
masak needn't be complicated. some day we'll make ourselves a channel and start it. :)
not tonight, though.
22:49 nadim_ joined 22:50 nadim left
lue of course not, a new doctor who comes on in a couple hours :P 22:55
masak :)
let's keep it in the back of our minds for some time. 22:56
lue thinks of creating the #rakudodeathstar channel for things like #rs that aren't appropos for #rs 23:00
masak that's not a channel, it's a space station! 23:03
lue the IRC channel for the space station of course :) 23:04
sbp I love how the most recent change message for cutegirls is "A few minor visual improvements" 23:06
masak even cuter, in other words. :)
lue masak: of course, the perfect virtual representation of Rdie* would be a MUD ;)
23:11 patrickas joined 23:12 nadim_ left 23:13 mce_ro left
dalek meta: r236 | diakopter++ | trunk/Sprixel/ (5 files):
[perlesque] more fixes for mono, hopefully.
23:16
23:16 justatheory left 23:27 patrickas left 23:38 astrojp joined 23:50 wknight8111 joined 23:53 masak left