»ö« | 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.
sorear that's part of why we don't do it, I think 00:00
lue I feel the urge to fix it myself :) . Let's see how difficult it is to _find_ the bug in the first place :)
It's such a funny bug though.
lue can't help but wonder if fixing the error message would be a good first step. 00:05
jnthn $dayjob meeting in 7 hours or so, guess I should get at least try and some sleep ahead of that. night o/ 00:06
lue goodnight o/ 00:07
sorear STD.pm6 is still fighting me 00:09
TimToady I hope it's losing :) 00:11
sorear it's more a case of modifying a compiler with a bootstrap system designed by an idiot is painful 00:12
TimToady sort of a collective idiot, in this case :) 00:13
sorear any cleanup I make to STD.pm6? 10 minutes later, I find out that 1. my obviously correct cleanup is actually causing miscompilations 2. I need to svn revert the compiler in order to try again
lue images a STD.pm6 as a child who refuses to take the medicine, even though it would make him feel better. 00:14
*imagines STD.pm6
pugssvn r31169 | colomon++ | [t/spec] Additional tests for div, first tests for mod. 00:15
arnsholt rakudo: my @a; @a[0] = []; @a[0][0] = 1; 00:26
p6eval rakudo b258f5: OUTPUT«Null PMC access in invoke()␤ in main program body at line 1␤»
arnsholt Is that a known bug? 00:27
k23z__ so I heard you guys want a GUI toolkit for Perl6 00:30
k23z__ I'm writing a GUI toolkit in C++ from scratch 00:30
lue rakudo: say [].WHAT
p6eval rakudo b258f5: OUTPUT«Array()␤»
k23z__ mberends I think was offering to write bindings 00:31
lue rakudo: my @a; say @a; say @a.perl
p6eval rakudo b258f5: OUTPUT«␤[]␤»
k23z__ what I can make is some minimalistic GUI toolkit written from scratch in C++
(well it will use SDL and/or OpenGL depending on how I decide to make it)
(but that matters less)
it is portable 00:32
lue rakudo: my @a=[]; @a[0] = []; @a[0][0] = 1;
k23z__ and at the current rate it will be finished in 2 years
p6eval rakudo b258f5: OUTPUT«Null PMC access in invoke()␤ in main program body at line 1␤»
lue hrm. Don't know, arnsholt.
k23z__ lue, do you think 2 years is a long time ?
sorear why another graphics toolkit 00:34
k23z__ sorear, because it will be minimalistic 00:34
lue not necessarily.
k23z__ most GUI toolkits out there have too much stuff in them, and are poorly documented(as most software is) 00:35
lue k23z__: If you were to make a new GUI toolkit, I don't think you'd be able to use any part of SDL/OpenGL/etc.
k23z__ lue, how so ?
lue, I'm already using it(SDL/OpenGL) 00:36
lue Maybe it's just me, but I get the idea that SDL and OpenGL *are* GUI toolkits [or can be used as such].
arnsholt SDL and OpenGL are general purpose graphics toolkits 00:37
k23z__ they offer primitives for graphics,keyboard,mouse 00:38
from that to a GUI there's a long way
lue Well then, I guess I need to look at some APIs sometime :) . In that case, use SDL/OpenGL for creating a GUI toolkit is great. 00:39
k23z__ I believe it will be better than Tk,Gtk,Gtk+,FLTK,Qt,Wx,MFC when it's finished 00:41
in my oppinion every GUI toolkit out there is flawed 00:42
lue That's what the guy who made FontForge thought [or something like that] :)
k23z__ lue, I like how he thinks then :) 00:44
every piece of software I see, I think it's too complicated
diakopter Soon the Rebellion will be crushed and 00:45
lue The Swiss Army Knife Law: "The more it does, the cooler it is."
k23z__ my GUI toolkit has now 2500 LOC , I will keep it below 5000 LOC and it will be able to do everything that every other toolkit does and much much better,and people will be able to look in the source and actually understand it 00:46
lue
.oO(I have a simple IRC client, it only does IRC and my ironing. I don't see what you mean)
diakopter k23z__: in which language is it written?
k23z__ diakopter, C + +
Tene k23z__: have you looked at EFL at all? Seems like they're doing some interesting things these days.
diakopter ah
arnsholt Are there issues with autovivification in current Rakudo? 00:47
k23z__ Tene, en.wikipedia.org/wiki/Enlightenment..._Libraries 00:47
Tene Yes.
sorear arnsholt: Plenty.
ash__ arnsholt: there were some last i checked 00:48
arnsholt Right. Then I just have to figure out how to work around them 00:48
ash__ arnsholt: what issues are you fighting with currently?
arnsholt ash__: I'm writing a HMM decoder (Viterbi's algorithm) so I've got a matrix I'm populating 00:49
k23z__ Tene, I just measure enlightment source code, they have 75k LOC
Tene, I intend to keep it below 5k
arnsholt I figure I'm just going to write a loop that builds the matrix populated with 0 or something 00:50
k23z__ I think having a lot of code is not necessarily a good thing
"Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away."
sorear "EFL has lots of code, therefore no idea in it can possibly be worth reusing." 00:51
diakopter "Most organizations/individuals don't have time for Perfection"
ash__ arnsholt: seems reasonable, also, if you feel like dipping into parrot, i know whiteknight made some libraries for parrot for matrix stuff 00:53
(and linear algebra, which is normally pretty matrixy) 00:54
whiteknight yeah, we have parrot-level matrices. Going to have full BLAS bindings soon
whiteknight where "soon" is "whenever somebody gets around to adding it" 00:54
k23z__ I can't afford to use over-complicated software like Gtk or Qt, if I write my own GUI toolkit, first of all I won't need to ever read any documentation(for GUI toolkits at least), also I won't take any more compromises and if something breaks or segfaults I know 100% whos fault it is and I can address him directly by facing a mirror
ash__ k23z__: what if you don't have opengl? 00:55
k23z__ ash__,
acastlenut q
k23z__ ash__, is there any situation where that can happen ? 00:56
ash__ i think a major part of most of the other gui toolkits you have mentioned is none of them require opengl
sure, old hardware, crappy hardware, cheap hardware, embedded systems
sorear hi, I don't have hardware 3d
gtk runs *fine* here 00:57
k23z__ ash__, I write a wrapper around the graphics functions over here, maybe some macros ... dunno yet
I hate to find something that I don't like and not being able to fix it , because the codebase of that piece of software is really beyond any size that's readable 00:58
Tene Reasonable enough. Just depends on your goals. 00:59
Raster has been working on EFL for years, started from scratch because of significant dissatisfaction with other gui toolkits, just like you.
k23z__ who's Raster ? company/individual ? 01:00
Tene Individual, primary author of EFL.
diakopter readability is very subjective
k23z__ EFL is written in C 01:01
C is hard for the eye
Tene That's extremely subjective.
:)
ash__ C is easier to understand than C++, all things considered # thats a loaded statement, but i think its true, and i'll get off the language wars bus here
sjohnson :) 01:02
some would say perl is hard on the eyes too!
Tene The EFL folks avoid C++, as it's far too huge to reasonably use or understand, and they can build everything they need in C, and understand it and have confidence in it, similar to your recently-expressed issues with GUI libraries. :)
sjohnson i found that the worst perl code, is from programmers who program in perl like they program in any other language... ie, not using any of the good perl features
and these people wonder why they "can't get into" perl
sorear k23z__: You must not have seen the innards of Parrot 01:03
Tene I haven't minded Parrot internals. 01:04
pugssvn r31170 | sorear++ | [STD,viv] Regex parse cleanup - ~ is now a pseudo quantifier, so it associates with the right atoms. No horrible reassociation pass needed. 01:08
sorear FINALLY 01:14
sorear hopes that mole stays down 01:15
now, for the rest
diakopter :) 01:26
pugssvn r31171 | sorear++ | [STD] ignore whitespace between an atom and a quantifier, instead of quantifying a space atom 01:32
pugssvn r31172 | sorear++ | [STD] $<foo> = <bar>? should parse the quantifier outermost for consistency with <foo=bar>? 01:47
pugssvn r31173 | colomon++ | [t/spec] Test that Cool properly handles conversion to Numeric for core Numeric and Real methods. 03:14
sorear um, what 03:15
STD parses <?after x> and <?after x > differently
in :!s context
dalek kudo: 0290298 | (Solomon Foster)++ | src/core/Cool-num.pm:
Clean up the Cool versions of the standard Numeric and Real methods.
03:18
kudo: 34c1ba4 | (Solomon Foster)++ | t/spectest.data:
Turn on new S32-num/cool-num.t test file.
sorear at this point, I think the only plausible explanation for why STD is broken is that I've somehow *accidentally* introduced a Trusting Trust virus into it 04:16
this is not comforting.
TimToady o_O 04:17
what are the symptoms?
sorear actually, it's Just Broken and can't be bootstrapped at all 04:22
my testing before commit didn't account for the possibility of writing a STD.pm6 that would doom us to failure three generations hence 04:23
now I get to revert all the minor regex fixes I've spent the last three days struggling with!
diakopter :'(
sorear how do I revert commits in svn? 04:24
TimToady just check out an earlier version?
I dunno, actually.
Tene svn revert, iirc 04:34
TiMBuS TimToady, svn co -r REVISION 05:10
bit late i know
sorear TiMBuS: it's me who's asking, and it's not too late 05:40
TiMBuS: but I want to destroy/supersede the revision, not just examine history 05:41
a darcs rollback or a git revert
Tene sorear: you checkout the file of the earlier revision, and then re-commit it as a new revision. 05:50
TiMBuS sorear, dont think you can do it one go. why not svn up -r oldrevision then recommit?
fff
eternaleye phenny: tell masak that 'forinsecal' is confusingly close to 'forensical', which means 'gathering data by examining the surroundings' 05:51
phenny eternaleye: I'll pass that on when masak is around.
TiMBuS google says some people use svn merge -r currentversion:oldversion but im not sure how that works (isnt it the same as svn up -r oldversion?) 05:53
jnthn morning, #perl6 06:07
sjohnson jnthn: yo 06:10
diakopter one way to do it is to "svn export -r revision that-dir" (a checkout without the .svn dirs) and cp the dirtree over the working checkout (preserving the .svn), then commit 06:19
note in particular the *export* instead of *checkout*
jnthn -> meeting 06:21
moritz_ good morning 06:22
moritz_ rakudo: 'ab' ~~ /<alpha> <xdigit>/; say $<alpha xdigit> 06:39
p6eval rakudo 34c1ba: OUTPUT«ab␤»
moritz_ rakudo: 'ab' ~~ /<alpha> <xdigit>/; say $<alpha xdigit>.join(',')
p6eval rakudo 34c1ba: OUTPUT«a,b␤»
ajs I'm trying to find code to look at that's a good intro to how to take a match and transform it into executable code within the context of the current program. Do we have anything like that that's relatively easy to read? I'm almost to the point that my actions are building code from my rules, but not quite. 07:00
moritz_ ajs: maybe www.perlmonks.org/?node_id=842792 is of help to you? 07:01
moritz_ apart from that, eval() and closure currying are currently the only ways to buid code with Rakudo 07:02
ajs Ah, so I can't call PAST::Compiler.compile directly? 07:03
I was trying to build up a PAST::Block containing a return PAST::Val just as a test 07:04
moritz_ ah, maybe that works 07:05
ajs Not exactly something that's copiously documented, though eh? ;-)
moritz_ I think PCT has documentation 07:06
somewhere inside the parrot repo
ajs OK, I'll look into that more tomorrow. I stopped paying attention to parrot after PGE and before NQP, so a lot has changed. 07:07
Just for fun and profit, I'm seeing if I can get a Perl 5 regular expression to transform into executable Perl 6 code in pure Perl 6.... it's ... interesting. 07:08
ajs I have a parser for P5re, but it needs a lot of very dynamic actions to manage it (things like (a|$) are a pain to parse. 07:09
But I'm starting small... first something that can return a value, then rule the world.
;)
moritz_ :-) 07:11
PGE had a perl 5 regex parser
ajs I'll take a look at that. My ultimate goal, of course, would be to transform arbitrary Perl 5 into Perl 6 (not as a bug-for-bug Ponie style thing, but just as a porting target) 07:12
ajs But getting from parsing a regex to handling the entire language is quite a long walk. Right now, I just want to get some working code 07:15
moritz_ working code is important, right 07:16
ajs heh
moritz_ -> decommute
pugssvn r31174 | cosimo++ | [docs] Try to understand which is which 08:46
r31174 |
r31174 | Mark css files so I can understand which of the
r31174 | 3 perl.css files is used in the synopsis html docs.
moritz_ runs update-syn on feather 08:47
cosimo if anyone knows a bit more of the synopsis publishing process
moritz_ raises hand 08:48
cosimo moritz_: cool
masak oh hai, #perl6! 08:48
phenny masak: 05:51Z <eternaleye> tell masak that 'forinsecal' is confusingly close to 'forensical', which means 'gathering data by examining the surroundings'
cosimo moritz_: there's another small problem, the new icons I added are not there in the /syn folder
masak eternaleye: yes. for the time being, consider that a feature. 08:49
cosimo i expected anything in docs/feather/* to show up in perlcabal.org/syn/ but apparently it doesn't work that way
moritz_ cosimo: svn.pugscode.org/pugs/docs/feather/...update-syn is what is run each hour
cosimo moritz_: so the new icons are showing up as broken
cosimo moritz_: i saw that, but it accesses ~agentzh which I don't know how to debug 08:49
moritz_ looks where the document root is
cosimo maybe someone can reset my password on perl6.feather.nl ? 08:50
moritz_ just a sec
agentzh cosimo: sorry about that :P
cosimo agentzh: np, really. just trying to understand how the pieces fit together :) 08:51
moritz_ cosimo: ~agentzh/syn/ is just an ordinary directory in which .html files are created 08:52
cosimo: you can change the update-syn script to copy stuff there
cosimo moritz_: ah, ok 08:53
moritz_ cosimo: you can put stuff into docs/feather/ in the pugs repo...
cosimo: where they will show up at the level of documentroot, hopefully
cosimo moritz_: what about the makefile in ~agentzh/syn/zh-cn ? is that relevant?
moritz_ cosimo: no idea 08:54
agentzh cosimo: that is not relevant, i believe.
it's just holding the chinese transcript of S01
iirc :)
moritz_ oh 08:55
it seems that /var/www is a symlink to something inside audreyt's home
which has changed recently
so maybe I need to set up a perlcabal user 08:56
moritz_ which just serves as a base for web-ish stuff 08:56
pugssvn r31175 | cosimo++ | Copy also the new smartlinks highlight icons 08:57
cosimo moritz_: please can you push the changes?
update-syn? 08:58
moritz_ cosimo: doing it now, takes a while to render all the synopsis 08:59
agentzh moritz_++ :D 09:00
moritz_ agentzh: I plan to migrate the update-syn and your crontab entry to a new user, so that people don't have to log in as you to run the update 09:01
agentzh moritz_: it makes a lot of sense :)
moritz_ cosimo: it seems there's no 'cosimo' account on feather at all.. do you want one? 09:02
masak ajs: ping 09:10
cosimo moritz_: yes, that would be great
masak seems some actual "I want to believe"-type people are starting to pick up on the ufo project on Twitter. :) I have no idea what they make of it, but they do link to it. 09:11
mathw hah 09:20
moritz_ cognominal: could you please make your patches with `git format-patch HEAD~1' (need to commit first)? That way they are easier to apply 09:21
cosimo moritz_: actually I had thought of changing update-syn so it can run "inplace", from the svn tree itself 09:22
cognominal moritz_, ok
k23z__ mberends, hey, so you want to write some bindings eh ? 09:28
mberends k23z__: yes. sorry, busy right now, but what you've written about your GUI toolkit looks interesting (and somewhat hubristic) 09:34
masak hopes someone will provide and package bindings to some of the more common GUI toolkits 09:36
mathw Oh yes 09:37
Someone will
It might even be me
Just... not yet
pugssvn r31176 | cosimo++ | [docs] update-syn: also update the css file for the synopsis when syncing 09:55
r31177 | pmurias++ | [smop] fix test 10:05
pugssvn r31178 | pmurias++ | [mildew] dumping lexicals scopes and idconsts 10:05
r31179 | pmurias++ | [mildew] options to Mildew::Backend::OptC are optional
cosimo now the smartlinks in the syn docs are a bit better I think 10:08
i still need to fix the highlight icons, will get there soon 10:09
moritz_ cosimo++ 10:12
blogs.msdn.com/b/vcblog/archive/201...ckend.aspx 10:16
pmurias moritz_: the stress modes part is interesting 10:28
pugssvn r31180 | cosimo++ | [docs] update-syn: Clean up and make easier to relocate 11:35
moritz_ [Coke]: ping 11:52
cosimo there's quite a few co* nicks too :) 11:57
mberends k23z__: ping 12:02
k23z__ mberends, pong
mberends about writing bindings for Rakudo... 12:03
we are restricted to certain call signatures because of the current way Parrot does NCI 12:04
k23z__ mberends, I got windows(with close/minimize/maximize buttons) , drag & drop , buttons , images , and hoverin/hoverout events at the moment .. I intend to basically write everything that a normal GUI toolkit does in C++ and keep it below 5000LOC
mberends k23z__: cool!
mberends k23z__: the part that is likely to be hardest is getting callbacks to work for input events 12:05
k23z__ mberends, well for creating an object on the screen I create a class and derive from the basic classes(Button,Window etc) and implement methods for that class 12:06
mberends, how would you do it ?
mberends k23z__: in Rakudo we would be limited to polling
moritz_ unless there's an external runloop
k23z__ how would polling limit this ? what is it polling for ?
I have a World::Loop() which waits for events, it's wrapped inside the SDL event loops 12:07
*loop
jnthn back from meeting
Whoa...I drank *way* too much coffee at those meetings. 12:08
colomon \o/
diakopter moritz_: from your msdn link above: "We don’t require complicated harnesses since our app is short-running and we don’t have to deal with the UI automation problem that many other testers in the world do because there is no user interaction. Most of our tests are just batch or simple perl scripts with some .cpp and .h files."
mberends k23z__: I don't think Rakudo can provide anything callable from your Loop()
k23z__ mberends, why ? I can write some events or signals for Rakudo to catch and handle ... 12:09
mberends, will he have to do IPC ? or how exactly will the two communicate ?
mberends, I could also include some serialize/deserialize(JSON/XML) and make a pipe through which you could tell the GUI what you want .. 12:10
but uh.. that would be a bit slow
mberends, how do you normally write bindings for Rakudo ?
mberends k23z__: preferably all in one process, so without IPC, because Rakudo does only blocking synchronous I/O 12:11
k23z__: the normal bindings are for the Rakudo process (which is actually the Parrot executable) to load a native code library and call the functions in there. 12:12
k23z__ so I should export .so or .dll ?
and you could load and import the functions there and use them ?
mberends k23z__: yes. The .so for Unix or .dll for Windows. Both work fine. 12:13
cognominal is there a way to enumerate all the classes known from Perl 6?
moritz_ don't think so
anonymous classes might even be garbage collected once their instances fade away 12:14
mberends k23z__: are you familiar with github.com/jnthn/zavolaj ?
k23z__ not at all
jnthn anonymous classes had best be GC'd once their instances fade away. :-)
moritz_ jnthn: knowing the parrot GC... I can only hope :-) 12:15
jnthn moritz_: Well, it's not so much that Parrot GC as if it keeps another reference around to it that I didn't intend it to.
cognominal what is this backslash around anonymous going across the net :)
moritz_ all anonymous classes oppose scientology... or so :-) 12:16
mberends k23z__: Zavolaj is the tool I would like to use to create Rakudo bindings for your GUI library
k23z__ mberends, I've just read here how to use mingw to create dlls www.adp-gmbh.ch/win/misc/mingw/dll.html 12:17
mberends, so one part of the problem is solved, since I would just have to write a C api over my C++ already existing API
mberends, then using Zavolaj you can use the C API to write the bindings no ?
mberends k23z__: that would work :-)
afk & # $class 12:31
colomon perl6: say 11 mod 3 12:38
p6eval rakudo 34c1ba: OUTPUT«2␤» 12:39
..pugs: OUTPUT«*** ␤ Unexpected "mod"␤ expecting operator, ":" or ","␤ at /tmp/FFEghmBGNv line 1, column 8␤»
..elf 31180: OUTPUT«Undefined subroutine &GLOBAL::infix_mod called at (eval 123) line 3.␤ at ./elf_h line 5881␤»
colomon alpha: say 11 mod 3
p6eval alpha 30e0ed: OUTPUT«infix:<mod> not yet implemented in Rakudo, sorry␤in sub »
colomon ooo, at least alpha had a nice message about it. :) 12:40
moritz_ still, surprisingly good error message :-)
pmurias ruoso: hi 12:49
pmurias ruoso: it turned out the segfault was a result of infinite recurssion in a incorrect test 12:51
masak rakudo: say [mod] 100, 99, 88, 77, 66, 55, 44 12:59
p6eval rakudo 34c1ba: OUTPUT«===SORRY!===␤Could not find sub &infix:<mod>␤»
masak huh? 13:00
colomon huh.
masak rakudo: say 100 mod 99
p6eval rakudo 34c1ba: OUTPUT«1␤»
masak submits rakudobug
masak probably a symptom of something larger. 13:00
colomon rakudo: say [div] 100, 99, 88, 77, 66, 55, 4
p6eval rakudo 34c1ba: OUTPUT«0␤» 13:01
colomon something wrong with the ordering of .pm files in the build, maybe?
moritz_ colomon: is it 'our' multi infix:<mod>? 13:01
ruoso pmurias, hi 13:02
colomon maybe it's the our, that's the only difference I see from div
trying that.
ruoso pmurias, that's good news...
arnsholt Are there any established practices on how and where to document modules? 13:04
PerlJam buenos dias #perl6 13:05
colomon o/
> say [mod] 100, 99, 88, 77, 66, 55, 44
1
moritz_ arnsholt: most modules use some PODish markup 13:06
masak arnsholt: anything which is an "entry point" in some sense SHOULD be documented. probably other things as well.
arnsholt: mberends is our documentation hero, so you should ask him.
masak hm, meant mberends++. :) 13:06
colomon hmmm.... where to test [mod]? 13:07
moritz_ colomon: either along with mod, or in S03-metaops/* somewhere
colomon mod is in arith.t, which seems pretty low level. 13:08
pmurias ruoso: i'll now try to steal the build system from Text::BibTeX which is a dual perl module/C library
ruoso pmurias, okay... there are other references if that looks complicated... 13:12
pmurias ruoso: got any links to other things to steal parts from? 13:13
ruoso pmurias, i've recently made a binding for Sedna 13:16
it included calling a completely external build
Module::Install (or is it Module::Build) also has a module for building c libraries I htink 13:17
pmurias ruoso: got a link for the Sedna binding? 13:20
found
pmurias ruoso: the README for Sedna is outdated as it mentions it as a dependencie 13:25
* dependency
while the POD mentions that it is bundled
ruoso pmurias, er... ok... I'll update it 13:37
ruoso should probably start using Module::Install::ReadmeFromPod
arnsholt I released! 13:46
Perl 6 can now decode HMMs: github.com/arnsholt/Algorithm-Viterbi
masak \o/ 13:47
and it uses ufo! :) 13:48
pmichaud good morning, #perl6
masak morning, pmichaud
cognominal how to express the type of this structure ( "toto", [ "foo"] ,"foo" ); That is a tree of stings?
arnsholt masak: ufo has a very endearing feature. I don't have to do -anything- to get it to work =D 13:49
cognominal \o/ pmichaud
colomon \o
masak cognominal: how do you mean, 'express'? you want a name for it? 13:50
I'd call it a nested array of strings.
except that the outermost layer happens to be a listcaptureparcelwhatever.
cognominal I want to declare a variable of that type, so I need to expresse that type. 13:51
masak std: subset NAoStr of Array where { all(|$_) ~~ Str | NAoStr } 13:52
cognominal So that is can be checked somehow. Statically or dynamically, par the Perl 6 compiler or a Perl 6 lint. Who knows. I don't care but I want to be able to say in a way that part of Perl6 concrete syntax.
p6eval std 31180: OUTPUT«ok 00:01 109m␤»
pmichaud cognominal: that structure starts out as a Parcel
cognominal s/par/by/ 13:53
masak cognominal: would the above be enough? seems you can recurse in subtype declarations.
std: subset NAoStr of Array where { all(|@^elements) ~~ Str | NAoStr }
p6eval std 31180: OUTPUT«ok 00:01 106m␤»
masak cackles 13:54
cognominal masak, sounds nice enough.
masak hm, probably the | isn't even needed there.
the prefix:<|>, I mean.
the infix:<|> may or may not cause an infinite loop. :/
(since junctions evaluate all their components in parallel) 13:55
but it should be OK, I think, since the structural recursion always bottoms out.
unless there are := bindings in the middle of it. :/ 13:56
masak thinks too much
pmichaud or perhaps captures 13:57
masak arnsholt: Algorithm-Viterbi added to proto's projects.list
cognominal I tend to think always a step beyond what is implemented or more often perpendicular to what is sensible.
pmichaud cognominal: oh, so you're like masak++ then? ;-) 14:00
masak 'perpendiculat to what is sensible'. yup. 14:03
s/t/r/
pmurias ruoso: smop is under Artistic 2?
[Coke] moritz_: pong. 14:06
cognominal I need to write as much code as masak++ so
[Coke] finally gets around to writing a dumb builder that checks parrot and all the hlls he cares about. 14:09
cognominal rakudo: say 'abc' ~ m :g / . / 14:11
p6eval rakudo 34c1ba: OUTPUT«===SORRY!===␤Confused at line 11, near "say 'abc"␤»
cognominal oops
rakudo: say 'abc' ~~ m :g / . /
p6eval rakudo 34c1ba: OUTPUT«===SORRY!===␤Confused at line 11, near "say 'abc"␤»
cognominal what is the current idiom in rakudo to do that? 14:12
cognominal rakudo: say 'abc'.match( / . /, :g ) 14:12
p6eval rakudo 34c1ba: OUTPUT«abc␤» 14:13
cognominal hooray
rakudo: say 'abc'.match( / . /, :g ).WHAT
p6eval rakudo 34c1ba: OUTPUT«Parcel()␤»
cognominal rakudo: print $_ for 'abc'.match( / . /, :g )
p6eval rakudo 34c1ba: OUTPUT«abc» 14:14
cognominal rakudo++
ajs rakudo: my $code = PAST::Compiler.compile(PAST::Block.new(PAST::Val.new( :value(1) ))); say $code(); 14:19
p6eval rakudo 34c1ba: OUTPUT«1␤»
ajs rakudo: my $block = PAST::Block.new(PAST::Val.new( :value(1) )); my $code = PAST::Compiler.compile($block); say $code(); 14:20
p6eval rakudo 34c1ba: OUTPUT«get_iter() not implemented in class 'Capture'␤ in main program body at line 11:/tmp/Gcz_AAWNc_␤»
k23z__ /mingw/lib/crt2.o(.text+0x37):crt1.c: undefined reference to `__cpu_features_init <--what the hell is this ?
ajs Anyone know why those two aren't the same?
jnthn rakudo: rakudo: my $block = PAST::Block.new(PAST::Val.new( :value(1) )); say "alive" 14:21
p6eval rakudo 34c1ba: OUTPUT«===SORRY!===␤Confused at line 11, near "rakudo: my"␤»
jnthn rakudo: my $block = PAST::Block.new(PAST::Val.new( :value(1) )); say "alive"
pmichaud [Coke]++
p6eval rakudo 34c1ba: OUTPUT«alive␤»
pmichaud PAST compiler might not know what to do with rakudo objectrefs 14:22
jnthn rakudo: my $block = PAST::Block.new(PAST::Val.new( :value(1) )); my $code = PAST::Compiler.compile($block);
p6eval rakudo 34c1ba: OUTPUT«get_iter() not implemented in class 'Capture'␤ in main program body at line 11:/tmp/sXHbFObB83␤»
jnthn pmichaud: Oh, oddness. I'd have thought they'd be transparent to it. 14:22
pmichaud well, so would I, but normally we're doing binding instead of assignment in NQP 14:22
jnthn True.
ajs Yeah, and sadly that's not an option in Rakudo 14:23
masak submit a rakudobug?
pmichaud rakudo: my $block = PAST::Block.new(PAST::Val.new( :value(1) )); say PARROT($block)
p6eval rakudo 34c1ba: OUTPUT«Perl6Scalar->PAST;Block␤»
ajs Fair enough, just wanted to be sure I wasn't doing something stupid
Hmmm pmichaud, you might be onto something there, let me try that out 14:24
pmichaud it may also be that PAST::Compiler isn't returning something that rakudo knows how to process
jnthn pmichaud: That worked in the pervious example though.
ajs It works fine in the first case 14:24
pmichaud oh, good point.
jnthn uh, previous :-)
pmichaud so I fall back to "there's something weird about $block" 14:24
yes, I would expect it to be transparent... but perhaps it isn't for some reason. 14:25
ajs rakudo: my $block = PAST::Block.new(PAST::Val.new( :value(1) )); my $code = PAST::Compiler.compile(PARROT($block)); say $code();
p6eval rakudo 34c1ba: OUTPUT«Null PMC access in type()␤ in main program body at line 11:/tmp/cgP_Wd5cmw␤»
ajs OK, will go the bug route. Thanks all.
pmichaud yes, I'd be curious as to what that could possibly be. 14:26
pmichaud I'm also curious as to whether the get_iter is failing on a Parrot Capture or a Rakudo Capture 14:26
jnthn The latter would be very odd. 14:27
pmichaud agreed... but it's all a little odd to begin with 14:27
jnthn (Since we inherit from Parrot Capture...)
Troo. :-)
pmichaud phenny: tell sorear after thinking about it this morning, I realized that double-indirection for variables/binding isn't the answer either 14:28
phenny pmichaud: I'll pass that on when sorear is around.
pugssvn r31181 | pmurias++ | [mildew] ast from the m0ld backends doesn't go through the 14:31
r31181 | simplification pass, noops in m0ld, label duplication is caught
r31182 | pmurias++ | [mildew] started porting Build.PL over from Text::BibTeX 14:32
masak pmurias, ruoso, sorear: which one of you should I talk to if I'm interested in the art of turning a parse tree à la viv into an AST? 14:58
pmurias any one of us which is avalible 15:01
masak ok, great. 15:02
I don't really know where to begin. I know the goal is to condense information by removing unnecessary information only pertinent to parsing. 15:03
I don't have very many examples of how to do that. PPI is one, I guess. 15:04
I've been looking at that a little.
jnthn masak: There's also Rakudo's Actions.pm, which is doing that very thing.
masak ah, goodie.
but Actions.pm creates PAST, right?
jnthn Yes
*AST* :-) 15:05
masak the impression I have of PAST is that it's too low-level.
but I might be wrong on that; I don't know enough about it.
jnthn I thought we'd have to extend it a lot when I first encountered it too, 2+ years back. 15:06
I was wrong.
pmurias masak: mildew/src/VAST/* contains code which turns VAST into mildew AST
masak ok, here's what I'd like to have. I want an abstraction level where I can comfortably say things like "these two methods return values of different type", "this method contains a statement which will never be reached" and "this method never refers to 'self', directly or indirectly". will VAST or PAST do that for me? 15:08
pmichaud PAST can do it, but it's not built-in.
(it can be done with PAST, but PAST doesn't provide those capabilities by default) 15:09
masak ok, that's good to know. I didn't expect it to be built-in.
I'm prepared to write search tooling myself.
jnthn It's still I expect we'd need to build some day.
If you're intested in building it, that'd be awesome.
masak I am. that's sigmund. 15:10
just thinking of what AST tech to use.
maybe PAST is it.
pmichaud for example, for the latter, we can just have every variable reference place a marker in the routine's symbol table saying "I used this"
jnthn pmichaud: Well, or walk the tree for PAST::Var nodes with a matching .name() 15:11
pmichaud jnthn: sure, but "walk the tree" is a little expensive.
masak 'self' is a term, not a variable. :)
jnthn True.
pmichaud easier to do it while building :-)
jnthn masak: That's a parsing thing. At the AST level you care about "how do I get self"
masak: And the answer is "it's stored in a lexical" 15:12
masak oh, ok.
pmichaud in rakudo, we implement self as a lex... what jnthn++ said.
I suppose it's an open question as to whether 'self' should be visible in the lexpad.
masak I need to learn to distinguish parse-phase things from things in later phases.
jnthn pmichaud: Well, it's tricky-ish to get at it now. :-)
pmichaud: Since it's stored sigil-less. 15:13
pmichaud jnthn: I was thinking in the sense of MY::
jnthn eww 15:13
pmichaud MY::<self>
jnthn YOUR::<self> :-) 15:13
jnthn pmichaud: Well, we can find a way around that if we need to. 15:14
pmichaud jnthn: right... I'm just idly curious at the moment. :)
jnthn pmichaud: We'll hae the same fun with MY::<__CANDIDATE_LIST__> too :-)
masak rakudo: class A { method closure { my $i = 0; return { say self, ++$i } } }; my $c = A.new.closure; $c() for ^5
p6eval rakudo 34c1ba: OUTPUT«A()<0x1a1fd80>1␤A()<0x1a1fd80>2␤A()<0x1a1fd80>3␤A()<0x1a1fd80>4␤A()<0x1a1fd80>5␤»
masak \o/
a self-sacrificing method :P 15:15
jnthn Totally giving it's self up.
pmichaud wants to attack the ticket queue, but knows that he really needs to solve lists. 15:16
masak to achieve closure, you first have to let go of the self...
masak pmichaud: lazy lists feels like the last big remaining feature for R*. 15:17
pmichaud masak: well, working lists and iterators, yes.
it's not just laziness, it's also the mis-reporting of things like GatherIterator and the fact that binding lazy structures consumes them 15:18
and we still need working closures for R*, although that's pretty easy to solve at this point.
but closures will have to be solved in the next 3-4 days to make it into the parrot release, I suspect. 15:19
jnthn Aye, those are probably our two nastiest things at the moment.
jnthn pmichaud: Parrot release is a week today, I believe. 15:23
pmichaud jnthn: yes, thus closures have to be solved in the next 3-4 :)
jnthn So yes, 3-4 days to get in before the freeze.
masak does the closures trouble originate on the Parrot level?
pmichaud not any more.
but we need a new PAST node type to really handle it well.
masak oh! 15:24
pmichaud (and that's in Parrot)
wellllllll
if we *had* to, the PAST node type could come from Rakudo for a while :)
jnthn ;-)
pmichaud and then get backported into Parrot
masak no rush, then. :)
jnthn hands pmichaud a monkey with deft fingers
arnsholt Is there a way to make a named parameter required? (Apart from die "OMG!" if not $named) 15:58
jnthn ! 15:59
jnthn as in, :$batteries! 15:59
arnsholt Yeah, that worked, thanks 16:02
(it took me a second to figure out the one-byte response, but the parallel to ? is pretty clear, when I think about it)
masak hm, A06 didn't have the exclamation mark, nor (if I read it correctly) any corresponding way to mark a named as required. and nameds were marked like this: +$named. 16:09
I'm glad it changed. :)
optional positionals were ?$opt 16:10
jnthn
.oO( A is for Aulde )
masak: Heh, that longs...just wrong now. :-)
*looks
k23z__ mberends, you got windoze ? I wanna send you some binaries for you to hafalook 16:13
mberends k23z__: sure, sounds like fun. I'll privmsg you an email address 16:15
k23z__ mberends, please do so
TimToady masak: in all(|$x) the | is required, because $x never interpolates into a list 16:20
but don't write it that way
masak ok. 16:21
TimToady well, it was $_, so just .all works
masak ooh!
rakudo: .all
p6eval rakudo 34c1ba: OUTPUT«Method 'all' not found for invocant of class ''␤ in main program body at line 11:/tmp/E_IUQZn9ZC␤»
masak submits rakudobug
colomon What type is .all supposed to be defined on? 16:22
TimToady Any -> List
jnthn Ah, then it is a rakudobug.
rakudo: 42.all
p6eval rakudo 34c1ba: OUTPUT«Method 'all' not found for invocant of class 'Int'␤ in main program body at line 11:/tmp/P7ynz4FEml␤»
jnthn Ah, OK, actually not bug, just NYI.
TimToady in any case, it ought to work in your subset of Array 16:24
rakudo: my @a = 1,2,3; say @a.all 16:25
p6eval rakudo 34c1ba: OUTPUT«Method 'all' not found for invocant of class 'Array'␤ in main program body at line 11:/tmp/1M77vVAN9f␤»
arnsholt masak: I've got an idea for ufo, BTW
TimToady pugs: my @a = 1,2,3; say @a.all
p6eval pugs: OUTPUT«all(VInt 1,VInt 2,VInt 3)␤»
arnsholt How about a target that reruns ufo for you?
masak arnsholt: I'm listening. so are "they".
arnsholt: a target? how do you mean?
TimToady pugs: $_ = [1,2,3]; say .all 16:26
p6eval pugs: OUTPUT«all(VRef <Array:0x2aefa8588d91>)␤»
TimToady pugs: $_ = (1,2,3); say .all
p6eval pugs: OUTPUT«all(VRef <Array:0x2b56f2f9ab91>)␤»
TimToady hmm
well, pugs isn't always right :)
oh, wait
pugs: $_ := (1,2,3); say .all 16:27
p6eval pugs: OUTPUT«all(VInt 1)␤»
TimToady pugs: $_ := [1,2,3]; say .all
p6eval pugs: OUTPUT«all(VInt 1,VInt 2,VInt 3)␤»
arnsholt masak: A target in Makefile, that runs ufo
TimToady there we go :)
arnsholt Although I suppose it's a bit stupid
But I found I wanted it nonetheless =)
masak arnsholt: so, like, 'make ufo' or something? 16:28
arnsholt: that simply runs 'ufo'?
arnsholt Yeah =) 16:28
Now that I think about it, maybe not a good idea after all >.>
masak let's just say I'm not yet convinced of its advantages. :P 16:29
arnsholt I can understand that, actually =)
Maybe if ufo ever grows parameters or somesuch
Bah. My prove is too old for ufo 16:30
masak it has one, as of yesterday.
arnsholt: then your prove needs updating. maybe I should put that in the README or something.
arnsholt Yeah, I've encountered the problem before
My Ubuntu is olded 16:31
pugssvn r31183 | colomon++ | [t/spec] Add simple tests for [div] and [mod].
dalek kudo: 7821618 | (Solomon Foster)++ | src/core/Real.pm:
[t/spec] Add "our" to infix:<mod> definition so [mod] works.
16:32
arnsholt masak: But something you should do is mark the test and clean targets as phony targets 16:33
masak arnsholt: excellent idea. I await your patch with gratitude.
arnsholt Sure =)
masak ++arnsholt 16:34
arnsholt *sigh* This is the times when git taxes my patience 16:38
Coaxing git into making a patch takes longer than writing the patch
masak I'm not particular. I accept a gist of a diff. 16:39
arnsholt masak: gist.github.com/430285 16:44
moritz_ back 16:45
[Coke]: I recall you have access to the planetsix config file... colomon's post are all shown with "colomon" as the title, not with the actual title
masak arnsholt: applied, pushed. thanks!
moritz_ [Coke]: could you please try to fix it?
masak goes home to do laundry, cook nom 16:46
colomon I'm not really that vain, honest! ;) 16:46
moritz_ colomon: that's what they all say :-)
[Coke] moritz_: it's his feed. 16:47
view-source:justrakudoit.wordpress.com/feed/
says: "
<media:title type="html">colomon</media:title>
sorry.
moritz_ huh? 16:48
moritz_ [Coke]: ah, that's the feed title 16:48
[Coke]: but what we want is <title> inside each item 16:49
<item> <title>Mandelbrot</title> ...
jnthn moritz_: It is inside each item though - but it's the title for the gravator...
*gravatar
[Coke] moritz_: ah...
jnthn Maybe the parser is not very namespace aware. ;-)
[Coke] in that case it's not a config issue, it's a bug in the planet code, I'm guessing.
colomon is glad you guys understand what is going on, I was just trying to figure out how to fix it... 16:50
[Coke] if there is a different feed I could try, I can do that, otherwise, best to bump to the planet coders.
moritz_ [Coke]: not aware of one :( 16:54
[Coke] moritz_: I'd ping robert and ask. 16:56
moritz_ ok, I'll write a mail
colomon moritz_++ 17:00
moritz_ done
[Coke] moritz_++ 17:03
jnthn realizes he'd better make a start on his talks for $workshop today. 17:04
moritz_ speaking of today... #phasers in 1:54? 17:06
arnsholt What is this #phasers thing? 17:09
moritz_ what previously was #rakudosketch
our weekly status meeting
arnsholt Ah, right
[Coke] sighs. I'm going to have to do another bisect to figure out when partcl-nqp died. =| 17:11
whoops. ww
jnthn Yes, #phasers is today 17:12
We'll see who makes it. :-)
colomon moritz_: thanks for the reminder, too.
(#phasers, I mean.) 17:13
cognominal rakudo: : :g.perl 17:23
oops
p6eval rakudo 782161: OUTPUT«===SORRY!===␤Confused at line 11, near ": :g.perl"␤»
cognominal rakudo: :g.perl
p6eval rakudo 782161: ( no output )
cognominal rakudo: say :g.perl
p6eval rakudo 782161: OUTPUT«"g" => Bool::True␤»
cognominal I thought that was :g(0) 17:24
cognominal ho, apparently that has changed. 17:26
TimToady cognominal: it was never :g(0), though rakudo had it :g(1) at one point 17:47
that is, :foo has always implied true, not false 17:48
moritz_ it's :!foo that's false
TimToady nodnod
cognominal anyway, it makes more sense even if it may be heavier on memory implemantation-wise. 17:55
dalek kudo: acecb97 | moritz++ | src/core/Match.pm:
remove some clutter from Match.perl output
17:59
arnsholt I even blogged: blogs.perl.org/users/arne_skjaerhol...erl-6.html 18:01
(Most fitting would perhaps be if the post was generated by a HMM language model, but I think readability would suffer ^^)
TimToady cognominal: as many Lisp implementations have shown, there is nothing that says a unit cell must always be interpreted as a native int; certainly in Perl 6 the unit cell could encode commont Int values and common enum types 18:02
moritz_ www.perlmonks.org/?node_id=843572 btw 18:04
cognominal TimToady: A scalar being a degenerated list with one element. Should I have failure like that : Method 'sort' not found for invocant of class 'String' ? 18:15
That would avoid to special case a lot of code.
afk& 18:16
pmichaud phenny: tell sorear disregard my previous message... we do need double-indirection, it just looks very different from what I was originally expecting. 18:21
phenny pmichaud: I'll pass that on when sorear is around.
moritz_ pmichaud: is there anything I can do to help you get inversion lists and backslash escapes in char classes running? 18:22
pmichaud moritz_: let me see if I can figure out how to write it up. 18:22
(the description)
moritz_ one more things... 18:24
for MAIN I want to add a contextual to the module loader that indicates if we're compiling a module or not 18:25
and if not, add a call to a MAIN_HELPER or so to the end of the mailine code
does that sound like an accecptable plan? 18:26
pmichaud no
I think we decided a bit ago that using contextuals for this isn't really the way to go
moritz_ did we settle on an alternative?
pmichaud yes, but haven't implemented it yet. 18:27
essentially, YOU_ARE_HERE needs a refactor.
The first (outermost) sub in any compiled module needs to see if it has an outer context.
If it has an outer context, then it's not the mainline.
If it doesn't have an outer context, it is the mainline.
moritz_ modules have an outer context? 18:28
I mean, other than the setting
pmichaud well, it's more in the sense of "am I an eval" versus "am I a module" 18:31
moritz_ use Foo; # shouldn't execute Foo.pm's MAIN sub
actually for now I'd even always include a call to MAIN_HELPER 18:32
and do the "run only if" part later as a refinement
moritz_ rakudo is awesome 18:42
with Q:PIR and the setting I can prototype my Rakudo code outside the compiler 18:43
jnthn #phasers in 13 mins or so 18:47
moritz_ nopaste.snit.ch/21083 18:50
I don't understand why I get that Null PMC Access
moritz_ %r should be the Any type object, not Null 18:50
moritz_ feels rather dumb 18:52
jnthn %r = $P0['&MAIN']
moritz_: You're checking if the lexpad is null
moritz_: But assuming that if the lexpad exists, there must be a &MAIN in it
moritz_ ah 18:53
jnthn My guess is that the line I pasted is the source of your fail.
moritz_ you're right
jnthn++
now that I know what my error was, it's easy to fix
pmichaud 18:42 <moritz_> rakudo is awesome 18:54
I like reading that. :)
cognominal Answering my own question @( ) is not so much a hassle 18:55
k23z__ mberends, ?
mberends, ping
mberends k23z__: pong
k23z__ mberends, cloud.github.com/downloads/wsdookad.../wfsdl.rar 18:56
mberends k23z__: I see the email, will be starting up windoze in a few minutes :) 18:58
k23z__ gr8
moritz_ rakudo: my $x = 5; $x does False; say $x.Bool 18:59
p6eval rakudo acecb9: OUTPUT«0␤»
mberends k23z__: it looks like you've done a lot of work there :)
moritz_ rakudo: my $x = 5; say $x.Bool
p6eval rakudo acecb9: OUTPUT«1␤»
k23z__ mberends, haha
moritz_ nopaste.snit.ch/21084 rather close to initial MAIN handling 19:02
pmichaud moritz_: I'm fine with whatever MAIN handling you want to put in place.. my concern is that we're starting to layer too many special-purpose dynamic vars into the loading process and not thinking about the bigger picture of how things fit together. 19:06
(which is why YOU_ARE_HERE needs a bit of a rework)
and the $*IN_EVAL dynamic var is EVIL 19:07
(it needs to go away)
moritz_ pmichaud: I'll introduce no dynamic vars, and live with always calling all MAIN subs
pmichaud wfm for now.
I expect I'll be able to address it in about a week.
(i.e., before the next rakudo release)
back to list design
cognominal that's creepy when, by mistake, I type 'say <something>' at the bash prompt instead of the rakudo and my mac reads it aloud. 19:15
PerlJam it's a feature!
samlh lol
cognominal but that happens because I am thrown out of the rakudo shell with get_string() not implemented in class 'ArrayIterator' 19:16
arnsholt The same thing happens to me from time to time =) 19:17
pmichaud eta to #rs? 19:18
moritz_ pmichaud: -18
pmichaud: in #phasers
pmichaud oops
rokoteko will you be able define your own ops in perl6? 19:38
moritz_ rakudo: multi sub postfix:<!>($x) { [*] 1..$x }; say 51 19:39
p6eval rakudo acecb9: OUTPUT«51␤»
moritz_ rakudo: multi sub postfix:<!>($x) { [*] 1..$x }; say 5!
jnthn fail ;-)
p6eval rakudo acecb9: OUTPUT«120␤»
moritz_ better :-)
rokoteko I mean like make an op called "*!*" that does what you want? ie. $result = 1 *!* 2; ? 19:40
moritz_ sure
what do you want *!* to do?
jnthn rokoteko: Like above but infix:<*!*> and take two args.
rokoteko jnthn: yes. infix sub that thakes two args, named in a weird way. :) 19:41
moritz_: I dunno. maybe $a**$b-1, if you need something.
moritz_ rakudo: sub infix:<*!*>($x, $y) { $x ** ($b - 1) }; say 2 *!* 9
p6eval rakudo acecb9: OUTPUT«===SORRY!===␤Symbol '$b' not predeclared in infix:<*!*>␤»
moritz_ rakudo: sub infix:<*!*>($x, $y) { $x ** ($y - 1) }; say 2 *!* 9
p6eval rakudo acecb9: OUTPUT«256␤» 19:42
rokoteko ah, brilliant.
something new. :)
TimToady I think ($a**$b)-1 is more useful...
takadonet TimToady: ... 19:52
jnthn std: $* 19:57
p6eval std 31183: OUTPUT«===SORRY!===␤Unsupported use of $* variable; in Perl 6 please use ^^ and $$ at /tmp/Nw0NoTCfy1 line 1:␤------> $*⏏<EOL>␤Parse failed␤FAILED 00:01 107m␤»
jnthn std: my $* = 42;
p6eval std 31183: OUTPUT«===SORRY!===␤Unsupported use of $* variable; in Perl 6 please use ^^ and $$ at /tmp/msn7f4ez6E line 1:␤------> my $*⏏ = 42;␤Parse failed␤FAILED 00:01 104m␤»
jnthn Aww!
masak std: ^^
p6eval std 31183: OUTPUT«Use of uninitialized value $bad in concatenation (.) or string at STD.pm line 67904.␤===SORRY!===␤Preceding context expects a term, but found infix instead at /tmp/GWZ6elm6cy line 1:␤------> ^^⏏<EOL>␤Parse failed␤FAILED 00:01 105m␤»
masak TimToady: ^^
patrickas hello 20:03
moritz_ hi patrickas 20:04
I'm currently working on MAIN sub included in rakudo
patrickas hi moritz_
\o/ maskak++
i mean moritz_++
moritz_ I got it far enough not to Null PMC Access
patrickas keyboard confusion :-)
moritz_ but it's not calling MAIN yet :(
patrickas Null PMC Access is good :-) 20:05
rokoteko are, let's say Int and Num somehow connected in the type system, or are they as separate as Int and Str?
patrickas can i help somehow ?
moritz_ rakudo: say Int ~~ Numeric 20:06
jnthn rokoteko: Well, they both do the Numeric role
p6eval rakudo acecb9: OUTPUT«1␤»
moritz_ rakudo: say Num ~~ Numeric
p6eval rakudo acecb9: OUTPUT«1␤»
moritz_ and both do the Real role too
rokoteko jnthn: nods. something like this I was waiting for as an answer. so roles can be user to extend the type-system?
moritz_ patrickas: I can push what I have to branch, maybe you have some ideas 20:07
patrickas: pushed to branch MAIN 20:08
jnthn rokoteko: Well, so can classes in that sense. :-) 20:08
rokoteko: We just define a Numeric role and Int and Num both declare themselves as doing it. 20:09
rokoteko: But any class doing Numeric-y things can also declare itself as "does Numeric" too.
So it's a way to be extensible in that sense I guess, yes.
moritz_ I guess the change to src/Perl6/Actions.pm isn't doing what it should 20:10
rokoteko jnthn: ok, thanks for explanation. 20:12
patrickas moritz_ ok I'll take a look
moritz_ ah, I guess the :name() thing is wrong 20:15
if only I spoke PAST fluently...
rokoteko how would I find out all the roles that f.ex. Num does? 20:19
moritz_ by reading the source code :-)
jnthn rakudo: say Num.^roles.perl
p6eval rakudo acecb9: OUTPUT«(Real[], )␤»
jnthn Though Real in turn does Numeric 20:20
...and that trailing comma is freaky.
moritz_ but not wrong
smash__ hello everyone 20:20
jnthn moritz_: No, but it may indicate something else is.
moritz_ hm
jnthn: how do I call a sub in PAST? PAST::Op.new(:pasttype('call'), '&subname') ? 20:21
or :name('&subname')? 20:23
jnthn :name('&subname') 20:25
pmichaud rakudo star repo now at github.com/rakudo/star
pmichaud current committers are pmichaud, jnthn, moritz, masak, perlpilot 20:26
cognominal pmichaud, what's the purpose of a new repo? 20:28
patrickas so I guess you guys are the santa clauses who'll bring christmas to us all ? :-) 20:29
pmichaud cognominal: distributions are separate from compiler releases
PerlJam cognominal: we need a place to put the dist
cognominal ok
pmichaud there can be many different distributions based on the rakudo perl compiler
cognominal patrickas++
jnthn afk for a little bit
smash__ moritz_: ping 20:32
moritz_ smash__: pong
smash__ moritz_: need a sugestion where to add a test for RT#69232 so i can close the ticket.. any ideas ? 20:33
moritz_ smash__: looking...
pmichaud if someone wants to add rakudo/star.git to hugme, that'd be great. 20:33
pmichaud for the star repository, I vote for a liberal commitbit policy 20:34
moritz_ pmichaud: I'd need the rakudo account API token for that 20:34
pmichaud moritz_: won't it be the same as rakudo? or do you not have that already? 20:34
hugme show rakudo
hugme pmichaud: sorry, I don't know anything about 'rakudo'
pmichaud oh.
moritz_ smash__: it would be ideal to get t/spec/S32-io/IO-Socket-INET.t running on Rakudo master
smash__: and add the test there
smash__ moritz_: i can have a look at it.. no promisses tho 20:35
pmichaud moritz_: /priv msg okay for api token?
moritz_ pmichaud: yes
dalek kudo: 4df5081 | pmichaud++ | docs/release_guide.pod:
Tentative name for June release.
20:36
moritz_ hugme: reload 20:38
moritz_ hugme: show star 20:39
hugme moritz_: the following people have power over 'star': T⁣imToady, [⁣particle], c⁣olomon, j⁣nthn, m⁣asak, m⁣berends, m⁣oritz_, p⁣michaud, s⁣orear. URL: github.com/rakudo/star/
patrickas damnt it! Now I got it! 20:39
It's the "star" that announces christmas! 20:40
sorry that was the last pun
no more siliness from me
PerlJam patrickas: too bad.
pmichaud the "star" has lots of meanings 20:43
patrickas well I was aware of the whatever
and had guessed "the star of the show" meaning
but it's the first time that I make the christmas connection 20:44
cognominal I know that BooK's wife is expecting a kid in August. Would he be our savvior? In a few years, will he argue succesffuly with the priests in the temple about the Perl 6 scriptures. 20:46
smash__ moritz_: ahh, you tricked me ;) 20:47
PerlJam Perl 6 has no temple. 20:48
patrickas Perl 6 has no priests 20:48
moritz_ oh sure it has 20:49
use.perl.org/~masak/journal/39445
smash__ i always played as priest !!
PerlJam pmichaud: are you paying attention to #ps? 20:51
patrickas Perl 6 has no priests .oO(just perlmonks) but I guess I was wrong :-) 20:53
cognominal pmichaud, I must talk with mberends at the french workshop this Friday. about rakudo *, is there a page I can refer to?
pmichaud cognominal: no, it's one of my many todos 20:55
I might be able to write something up by then
at least some talking points or bullet points would be good
mberends sneezes 20:56
cognominal I don't care so much about the date but about the features. I am seeing the docs/ROADMAP file , I suppose I can say the really important items will be solved. 20:57
mberends cognominal: do you mean talk about Rakudo * ?
cognominal By the way I am working on a presentation tool tentatively called Silver Bullets designed to present slides with annotated code. 20:58
cognominal mberends: at fpw, I will talk about rakudo * :) You will talk of that + everything else :) 20:59
cognominal In rakudo, I suppose that without the := operator. I can't replace ["est"] in [ "ceci", ["est"], "une pipe" ]; 21:49
I must walk the structure and build another...
colomon rakudo: my @a = [ "ceci", ["est"], "une pipe" ]; say @a[1] = "is"; say @a.perl 21:51
p6eval rakudo 4df508: OUTPUT«␤Cannot assign to readonly value␤ in '&infix:<=>' at line 1␤ in main program body at line 11:/tmp/HxoEjj0qDL␤»
colomon rakudo: my @a = ( "ceci", ["est"], "une pipe" ); say @a[1] = "is"; say @a.perl 21:52
p6eval rakudo 4df508: OUTPUT«est␤Cannot assign to readonly value␤ in '&infix:<=>' at line 1␤ in main program body at line 11:/tmp/9FcbrVp0dR␤»
colomon rakudo: my @a = ( "ceci", ["est"], "une pipe" ); say @a[0] = "is"; say @a.perl
p6eval rakudo 4df508: OUTPUT«ceci␤Cannot assign to readonly value␤ in '&infix:<=>' at line 1␤ in main program body at line 11:/tmp/6uoFNOkGm5␤»
colomon rakudo: my @a = ( "ceci", ["est"], "une pipe" ); @a[0] = "is"; say @a.perl
p6eval rakudo 4df508: OUTPUT«["is", ["est"], "une pipe"]␤»
colomon ah, typo
rakudo: my @a = ( "ceci", ["est"], "une pipe" ); @a[1] = "is"; say @a.perl 21:53
p6eval rakudo 4df508: OUTPUT«["ceci", "is", "une pipe"]␤»
colomon probably doesn't understand the question, and is off to the pub anyway...
cognominal well I want to have variables that would bind to subbranches, so I want them to see the modification. 21:55
Anyway, I have a workarouand.
dukeleto howdy 22:56
i have figured out how to load perl6.pbc 22:57
gist.github.com/430762 <-- src/metamodel/ClassHOW.pir needed a :load 22:58
jnthn wonders why it was missing in the first place 22:59
dukeleto jnthn: can you apply that?
jnthn Yeah, I'm just trying to remember if doing so will break something else.
dukeleto jnthn: i am runnign "make test" with it now 23:00
jnthn Needs make spectest really I guess
dukeleto jnthn: basic sanity tests pass, trying spectest now
jnthn: that allows loading perl6.pbc without running it 23:01
jnthn *nod*
dukeleto jnthn: without :load, it is impossible to load perl6.pbc without running it
jnthn: but yes, it could break something
jnthn dukeleto: Yeah. I'm hoping it's just a mistake rather than deliberately missing the :load.
I can't think of anything it'd break, so I'll go with mistake. :-) 23:02
dukeleto jnthn: most likely it is just a mistake, no one has tried to load the PBC without running it, most probably
dukeleto jnthn: but for PL/Perl6, i need to load perl6.pbc in the Parrot interp that will compile stored procedures written in Perl 6 23:03
jnthn dukeleto: If the spectest comes back clean (doing a run now) I'll apply it.
dukeleto jnthn: awesome!
jnthn rakudo: say [mod] 100, 99, 88, 77, 66, 55, 44
p6eval rakudo 4df508: OUTPUT«1␤»
dukeleto jnthn: i am seeing a failure in S02-literals/listquote-whitespace.rakudo, is that expected ? 23:04
jnthn No, but I wonder if it's a failed PARROT_REVISION bump.
pmichaud++ fixed something in nqp-rx in that area recently. 23:05
dukeleto jnthn: i am not using --gen-parrot, that is why. livin' on the bleeding edge for convenience, but my spectest is probably not valid
jnthn: since you are running one, I will kill mine
jnthn oh no, it was a Rakudo patch to fix that one 23:06
Hmm
Anyway, I doubt it's anything related to this patch.
dukeleto hopes for the best 23:07
eternaleye S06-routine-modifiers/proxy.t seems somewhat bitrotted; it uses the syntax 'new Proxy' 23:09
jnthn Eww. 23:10
Yes, decidedly bitrotten
Or just wrong since it's inception but never run. :-)
jnthn tests a cognominal++ patch too 23:12
eternaleye I was looking at it because I was curious as to how one defined a scalar container oneself to be used with my $foo is MyContainer. (I had this idea of my Int $foo is ( Scalar but Logged[$filehandle] ); ) 23:16
Util Within a sub, how can you tell if a optional parameter was passed, if undefined values are valid arguments for that parameter? 23:34
jnthn Util: Get the capture, and check the number of elements in it. 23:35
Well, the list part of it.
sorear returns
phenny sorear: 14:28Z <pmichaud> tell sorear after thinking about it this morning, I realized that double-indirection for variables/binding isn't the answer either
sorear: 18:21Z <pmichaud> tell sorear disregard my previous message... we do need double-indirection, it just looks very different from what I was originally expecting.
jnthn yayitssorear
sub foo(|$c, $x, $y?) { if +@($c) == 2 { ... } } 23:36
Or some such.
Util jnthn: And if there are multiple optional parameters?
jnthn Util: If they're positional, then later ones can't be passed positionally without passing earlier ones. 23:37
Util jnthn: true; I meant optional named params in the last question. 23:39
jnthn Util: if %($c).exists('the_name') { ... } 23:41
Util jnthn: Doh! Thank you!
jnthn Util: though another trick is to have a "clever" default value that sets a flag if it is triggered. 23:42
eternaleye std: role Logged[$fh] { method FETCH { say $fh, "Accessed at { localtime }, value: { (callsame).perl }"; nextsame }; method STORE { say $fh, "New value stored at { localtime }, value: { $^val.perl }"; nextsame }; }; my Inf $foo is ( Scalar but Logged[$*IN] ); $foo = 3; say $foo; $foo = 5; $foo = "UhOh";
p6eval std 31183: OUTPUT«===SORRY!===␤Placeholder variable $^val may not be used here because the surrounding block takes no signature at /tmp/pEwVec6mlm line 1:␤------> stored at { localtime }, value: { $^val⏏.perl }"; nextsame }; }; my Inf $foo is ␤In my
..declaration,…
cxreg why the separate repo for star?
eternaleye std: role Logged[$fh] { method FETCH { say $fh, "Accessed at { localtime }, value: { (callsame).perl }"; nextsame }; method STORE( $val ) { say $fh, "New value stored at { localtime }, value: { $val.perl }"; nextsame }; }; my Inf $foo is ( Scalar but Logged[$*IN] ); $foo = 3; say $foo; $foo = 5; $foo = "UhOh"; 23:43
p6eval std 31183: OUTPUT«===SORRY!===␤In my declaration, typename 'Inf' must be predeclared (or marked as declarative with :: prefix) at /tmp/bwL3rbQiBL line 1:␤------> e: { $val.perl }"; nextsame }; }; my Inf⏏ $foo is ( Scalar but Logged[$*IN] ); $f␤Malformed my at
../tm…
Util jnthn: would $y.exists work?
jnthn cxreg: It's a distribution release rather than just a compiler one, so we need to collect various things together.
Util: No
eternaleye std: role Logged[$fh] { method FETCH { say $fh, "Accessed at { localtime }, value: { (callsame).perl }"; nextsame }; method STORE( $val ) { say $fh, "New value stored at { localtime }, value: { $val.perl }"; nextsame }; }; my Int $foo is ( Scalar but Logged[$*IN] ); $foo = 3; say $foo; $foo = 5; $foo = "UhOh";
p6eval std 31183: OUTPUT«===SORRY!===␤Confused at /tmp/_XZNdUP5Ql line 1:␤------> .perl }"; nextsame }; }; my Int $foo is ⏏( Scalar but Logged[$*IN] ); $foo = 3; s␤ expecting name␤Parse failed␤FAILED 00:01 108m␤»
eternaleye std: role Logged[$fh] { method FETCH { say $fh, "Accessed at { localtime }, value: { (callsame).perl }"; nextsame }; method STORE( $val ) { say $fh, "New value stored at { localtime }, value: { $val.perl }"; nextsame }; }; my Int $foo is Scalar but Logged[$*IN]; $foo = 3; say $foo; $foo = 5; $foo = "UhOh"; 23:44
p6eval std 31183: OUTPUT«ok 00:01 108m␤»
eternaleye rakudo: role Logged[$fh] { method FETCH { say $fh, "Accessed at { localtime }, value: { (callsame).perl }"; nextsame }; method STORE( $val ) { say $fh, "New value stored at { localtime }, value: { $val.perl }"; nextsame }; }; my Int $foo is Scalar but Logged[$*IN]; $foo = 3; say $foo; $foo = 5; $foo = "UhOh";
p6eval rakudo 4df508: OUTPUT«No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are:␤:(Mu $child, Role $r)␤:(Code $block, Any $arg?, Any :export($export)!)␤:(Mu $child, Mu $parent)␤␤ in main program body at line 11:/tmp/CBdR5PS1Zb␤»
jnthn eternaleye: I'm not entirely convinced that'll work. (more)
Traits should be applied once, and at compile time, if they're really done correctly.
Not per "instance" of the variable. 23:45
You could make it work perhaps with a filename rather than a file handle.
Rakudo doesn't know how to handle it yet still, though.
eternaleye Yeah, I was thinking more of using it as a quick debugging tool
eternaleye Rather than something to use in production 23:45
jnthn Also, calling callsame and nextsame will call the next candidate twice. 23:46
Not just once and keep the return value.;
But again, easily enough default with.
eternaleye Ooh, forgot the my $foo = callsame idiom.
jnthn *nod* 23:47
[Coke] p3 23:57
dukeleto jnthn: how is that spectest looking?
[Coke] *argh*
jnthn dukeleto: dobre :-)
dukeleto: It just finished, I just pushed.
dukeleto jnthn: awesome! 23:58
cxreg i'm not crazy; laziness is incomplete or entirely unsupported, right? 23:59