»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
japhb Oh, hmmm, interesting. That assumes a post-install step for OS packages (though of course that's a well-supported thing) 00:00
TimToady it should populate at install time for the library
and pulled in lazily
japhb TimToady: yes, agreed.
TimToady on demand, like an autouse
japhb Our building is in the one sunbeam in a very dark purple-grey sky right now. 00:01
TimToady we're over under the cloud
but radar says this is just about the last bit of raincloud 00:02
maybe it should be @*DISTRO, in "mro" order 00:03
maybe $*DISTRO is short for @*DISTRO[0]
or, as I said, we differentiate .name from .*name 00:04
though I could see that getting out of sync, if parents skip
timotimo ab5tract: "be on its merry way" was lacking a "way" 00:05
TimToady so maybe $*DISTRO.parent.name etc
timotimo: I think that's intended
timotimo oh? 00:05
and i think it should be "its" rather than "it's"? 00:06
TimToady that's how I took it as a native English speaker, as a shortening for the longer
but yeah, its
ab5tract timotimo: Firefly reference 00:07
timotimo ab5tract: the "bag < of snowflakes >" gets treated by wordpress as html and the text in the angle brackets disappears in the resulting rendering
the footnotes don't link back to the text they appear in 00:08
TimToady wonders if DISTRO could be a role that recursively instantiates its parents 00:09
ab5tract timotimo: those are ad-hoc footnotes 00:10
and i've been working on this for two nights straight :)
TimToady $*KERNEL could also be recursive, for virtual hosting 00:11
timotimo sorry :)
TimToady assuming we can even get at the info for the outer host
DISTRO.upstream maybe 00:12
since the parents may disavow the downstream 00:13
ab5tract and if you notice the initial quote (which if no one has said before comes from me :), i sometimes get the nuances of 'its' as well ;) 00:14
still, good suggestions, and all implemented 00:15
ab5tract so, goodnight #perl6! i hope the post does the calendar justice. usually it's the first thing i read on a December morning.. weird to have already read it :) 00:21
tadzik what should I know :o 00:27
oh, Polish audience :)
torbjorn how do you loop over grammar matches.. say $<foo>.elems says 4; # havent found anyone actually doing this, but i was trying: for $<foo> { ... } # no success 01:05
dwarring torbjorn: for @<foo> { ... } # try this 01:06
torbjorn ah indeed, thanks
timotimo alternatively $<foo>.list ought to work as well
torbjorn and it does too, thanks 01:07
timotimo for $foobar { } will only do a single iteration no matter what's in $foobar (except if you do evil sorcery maybe) 01:08
m: my $foobar := (1, 2, 3); for $foobar { say "tick" }
camelia rakudo-moar 725e26: OUTPUT«/bin/sh: lsb_release: command not found␤tick␤tick␤tick␤»
timotimo binding is evil sorcery
torbjorn yeah i think i understand
timotimo (because it replaces the container with the value) 01:09
torbjorn i need to know how sigils are used
TimToady yes, don't do that, it will probably be vorbotten someday 01:10
torbjorn does the bot execute perl6's stdout in shell?
m: say "id"
camelia rakudo-moar 725e26: OUTPUT«/bin/sh: lsb_release: command not found␤id␤»
TimToady no, it's a first attempt at trying to load up $*DISTRO 01:11
obviously standing in some need of improvement :)
torbjorn ah yes
timotimo TimToady: binding a non-container to a $ variable? 01:13
TimToady one should just say 'my \foo =' if one wishes to be non-committal 01:29
BenGoldberg m: my \foo = (1, 2, 3); for foo { say 'tick' } 01:35
camelia rakudo-moar 725e26: OUTPUT«/bin/sh: lsb_release: command not found␤tick␤tick␤tick␤»
dalek kudo/nom: 6edc31b | TimToady++ | src/core/Distro.pm:
parse /etc/os-release if it's there
02:01
TimToady that should work for camelia 02:05
TimToady m: say $*DISTRO.name 02:32
camelia rakudo-moar 6edc31: OUTPUT«opensuse␤»
TimToady m: say $*DISTRO.version
camelia rakudo-moar 6edc31: OUTPUT«v12.3.Dartmouth␤»
TimToady m: say $*DISTRO
camelia rakudo-moar 6edc31: OUTPUT«opensuse (12.3.Dartmouth)␤»
TimToady m: say $*DISTRO.auth
camelia rakudo-moar 6edc31: OUTPUT«unknown␤»
TimToady m: say $*DISTRO.release 02:33
camelia rakudo-moar 6edc31: OUTPUT«12.3␤»
jimmy__ r: say $*DISTRO.signature 02:40
camelia rakudo-{parrot,moar} 6edc31: OUTPUT«(Blob)␤»
jimmy__ r: say $*DISTRO.desc
camelia rakudo-{parrot,moar} 6edc31: OUTPUT«(Str)␤»
tony-o did someone need something verified on osx? 04:20
Woodi morning #perl6 :) 06:20
raydiak \o Woodi 06:21
Woodi TimToady: thanx. understood that normal ';' finishes lists and other sugars&magics. 06:25
TimToady depends on how you define "normal", but it's possible to see it the other way, that in statementlist context, the "normal" sublist separator semantics are hijacked to perform sequential execution of statements :) 06:28
raydiak m: sub make-grammar (@chars) { grammar { token TOP { @chars+ } } }; make-grammar(<f o>).parse("foo").say # is this a reasonable way to attempt a "parametric grammar"? 06:52
camelia rakudo-moar 6edc31: OUTPUT«「foo」␤␤»
raydiak I wanted to just inherit, but then I have to define tokens instead of just pass a few lists and have the regex parts abstracted away entirely 06:55
TimToady it's reasonable in the sense that it could work, but not reasonable in the sense that it will be very slow, since it would currently have to recompile @chars every time 07:10
raydiak every time you call make-grammar, or every time you call .parse? 07:11
TimToady probably every + at the moment
raydiak ouch 07:11
TimToady yeah
TimToady we don't attempt to detect whether the array is changing or not 07:12
it just assumes it did
raydiak hrm 07:13
TimToady m: $_ = 'foo'; my @chars = 'f'; say / ^ [ @chars { @chars = 'o' } ]+ $/ 07:16
camelia rakudo-moar 6edc31: OUTPUT«␤»
TimToady m: $_ = 'foo'; my @chars = 'f'; say / ^ [ @chars { @chars = 'f','o' } ]+ $/
camelia rakudo-moar 6edc31: OUTPUT«␤»
TimToady m: $_ = 'foo'; my @chars = 'f','o'; say / ^ [ @chars { @chars = 'f','o' } ]+ $/
camelia rakudo-moar 6edc31: OUTPUT«␤»
TimToady hmm
m: $_ = 'foo'; my @chars = 'f','o'; say / ^ [ @chars ]+ $/ 07:17
camelia rakudo-moar 6edc31: OUTPUT«␤»
TimToady dunno why that's not matching
m: $_ = 'foo'; my @chars = 'f','o'; say / ^ @chars+ $/ 07:18
camelia rakudo-moar 6edc31: OUTPUT«␤»
TimToady seems busted
m: $_ = 'foo'; my @chars = 'f','o'; say m/ ^ @chars+ $/
camelia rakudo-moar 6edc31: OUTPUT«「foo」␤␤»
TimToady m: $_ = 'foo'; my @chars = 'f'; say m/ ^ [ @chars { @chars = 'o' } ]+ $/
camelia rakudo-moar 6edc31: OUTPUT«「foo」␤␤»
TimToady yes, recomputes the NFA for @chars on every single char 07:19
raydiak could I get it to not do that by like building a string out of it and interpolating that into a rule or something? 07:19
TimToady not without an EVAL 07:20
raydiak that's a thought 07:21
TimToady well, you could probably distribute a <{ }>+ such that it would only calculate on entry to the <{ }>+, not every char
but maybe you'd have to return the + from inside the <{ }> 07:23
you could pass in a precompiled rule and call it, I suppose
rx// being the equivalent of p5's qr//
raydiak oh, yeah that's what I was just looking for 07:24
TimToady but rakudo isn't very good at having parameters to its rules yet, I suspect 07:25
raydiak I did get the feeling I was doing something uncommon 07:26
TimToady it doesn't actually parse regex assertions quite right to do that in the general case
FROGGS TimToady: have you seen that comment? github.com/perl6/nqp/commit/6b22cf...nt-8825586
TimToady m: my token foo($x) { $x }; $_ = 'foo'; say m/ <foo('o')>+ / 07:27
camelia rakudo-moar 6edc31: OUTPUT«「oo」␤ foo => 「o」␤ foo => 「o」␤␤»
TimToady well, I guess it does that bit
TimToady FROGGS: no, but it's a good comment 07:29
FROGGS it is :o)
I like code reviews
sadly this does not happen at $work 07:30
dalek p: e910232 | TimToady++ | src/QRegex/NFA.nqp:
fossil conditional noted by ptf++
07:31
TimToady I think it's maybe proto regexes that aren't so good at parameters 07:32
raydiak well, maybe generating related grammars isn't going to work like I speculated, but at least now I have an idea how to make the existing Math::Symbolic::Grammar go faster 07:33
pretty sure I'm already doing some array stuff in there
b/c of how all the ops and syntax are defined in a list, declarative-like, then used by the grammar 07:34
TimToady here's where we could use an immutable tuple type 07:35
'cuz a different value would have a different WHICH 07:36
(not that the code checks that currently)
masak morning, #perl6
raydiak morning masak
masak I notice that ab5tract++'s draft hasn't been published yet. 07:38
any special reason it hasn't? (I'm not fully backlogged.)
TimToady not that I know of 07:39
says today 8:00 am, which I assume is Zulu time 07:41
so another 20 minutes maybe
masak yeah, just saw. 07:41
masak waits patiently 07:42
sergot morning #perl6 08:14
moritz \o sergot, #perl6 08:14
raydiak o/ sergot, moritz 08:19
sergot raydiak o/ 08:22
Ven o/, #perl6 08:23
blackbolt Hi, how can I create a new level window in GTK::Simple ?
raydiak \o Ven 08:24
mvuets waves 08:26
masak ab5tract++'s post! \o/ perl6advent.wordpress.com/2014/12/0...us-corner/ 08:41
masak reads
why Lisp macros are cool, by MJD: lists.warhead.org.uk/pipermail/iwe/...00130.html 08:47
masak "People who come from the Perl and C world have a deep suspicion of source code transformation, because it's invariably unreliable." -- I wonder how much we can make that not be the case. 08:49
I mean, the first step of the solution to that is pretty clear already: work on trees.
I maintain that "hygiene" is a second, independent step, and that it can be implemented in many ways. 08:50
FROGGS prefers his office
arnsholt Yeah, hygiene by default is good 08:51
masak arnsholt: my point is more, hygiene != trees.
arnsholt There are some arguments that you should be able to turn it off, but I'm not familiar enough with it to know whether that's actually a good idea or not
Oh, definitely!
masak some people sloppily assume that it is, and say "hygienic macros" when they really only have AST-based macros. 08:52
an AST does not hygiene make.
arnsholt Certainly. CL for instance
masak right.
moritz but hygiene implies trees, no? 08:53
masak CL's solution famously being "just gensym EVERYTHING"
masak moritz: sorta. 08:53
arnsholt Yeah
masak moritz: I mean, I could be difficult and imagine a text-based macro system that was really careful and did stuff.
moritz I mean, I haven't seen a single, text-based hygienic macro system
arnsholt Actually, string-level transformations should have a some other name than "macro"
masak moritz: actually, lambda calculus is kind of in that direction. 08:54
moritz arnsholt: "source filter"
masak moritz: even though the normal operations in lambda calculus only have to do with application/evaluation, not macros.
arnsholt Yeah. Or "rusted spoon" =)
masak I still haven't come down to an opinion about whether we'll want gensymming in Perl 6. 08:59
my macro grant proposal mentions it, but since then I've sort of thought about it differently.
moritz masak: what would we need gensymming for? my understanding was that we planned it for hygiene, but hygiene fell out of the scoping "for free" 09:02
masak it did. 09:03
(the waterbed cost for that is that lack of hygiene will be tricky to implement)
but yeah, I don't think we'll need gensyms for anything right now. 09:04
or, let me put it like this. 09:07
dalek ecs: 111c2b5 | (Elizabeth Mattijsen)++ | S99-glossary.pod:
Add empty gensym lemma (hint hint)
masak gensyms give you the ability to create something and then uniquely refer to it (a very little bit) later.
masak I believe we'll get that ability already by dint of Qtree nodes being uniquely identifiable. 09:08
dalek ecs: c562974 | (Elizabeth Mattijsen)++ | S99-glossary.pod:
Fill gensym lemma (masak++)
09:11
raydiak 'night * o/ 09:12
masak lizmat: hm. do you have a source for "gensym" being "generic symbol" rather than "generated symbol"? the latter would make more sense to me.
lizmat gnight raydiak
ah, ok
no
masak I went to Wikipedia and could find no confirmation either way. 09:13
dalek ecs: 5ab4260 | (Elizabeth Mattijsen)++ | S99-glossary.pod:
Fix thinko, masak++
lizmat generated makes more sense to me in this context 09:14
in the old S17 spec, there was even a mention of a gensym() function
masak wow. 09:15
in the async/parallel synopsis?!
lizmat "method throttled::trait_auxiliary:<is> ($limit=1, :$key=gensym()) {" 09:15
no further mention than that
masak that's (a) a silly use of the word outside of macros 09:16
(b) completely unnecessary, what with `{}`
m: sub foo(:$key = {}) { return $key }; say foo() === foo()
camelia rakudo-moar 6edc31: OUTPUT«False␤»
lizmat I guess that's why the old S17 spec is no longer in the repo 09:17
grrrr.... wordpress just removed my "Draft" setting and Published my placeholder immediately 09:20
Ven masak: CL's solution is "we a lisp-2, lol"
dalek ecs: bba0937 | masak++ | S99-glossary.pod:
clarify "gensym" entry a bit
lizmat masak++ :-) 09:22
lizmat afk for a few hours& 09:23
Ven placeholdeeers 09:24
masak yeah. my next writeup is probably going to be about that. 09:27
actually, "placeholdeeers" is a pretty catchy title ;)
arnsholt is an absolute maroon 09:29
dalek ake: 465cf0f | (Arne Skjærholt)++ | src/Snake/World.nqp:
Fix a braino in previous commit.

If you don't wrap the CompUnit with the setting lexical scope, the setting won't work. Durr.
09:34
Ven masak: well, feel free to use it ;-) 09:42
masak: considering your current rhythm, you should've done a "consistent december", with 24 blog posts :P 09:43
masak if only. 09:45
masak today's autopun: "I'm kind of in two minds about this whole Schroedinger's cat thing..." 09:47
brrt \o 10:20
ping nwc10
JimmyZ_ o/
yoleaux 3 Dec 2014 21:18Z <nwc10> JimmyZ_: I was hacking on fakecutables. Mailed to [email@hidden.address]
nwc10 here, or there? 10:21
brrt hey
here i suppose. i was also hacking on fakecutables
nwc10 I didn't know that.
JimmyZ_ brrt: but you're static one?
brrt no, also not in general, just in the specific case of perl6
yes, that's much the same idea isn't it? 10:22
nwc10 anyway, the actual "fakecutables" part wasn't hard.
it was the Makefiles
brrt nods
nwc10 and, also, I've "stopped"
so you're welcome to take/ignore/whatever I did
but I think it's important to start making the tool scripts in NQP
brrt ah... hmm
why? we already make the configure scripts in perl5
nwc10 long term this is futile 10:23
brrt true
nwc10 it would be like the Perl 5 build system still being written in Perl 4
brrt true
nwc10 and then having to keep Perl 4 around just to build Perl 5
brrt but on the other hand, there's nobody that ships with a default nqp yet
nwc10 it's also, I feel, a mistake that Parrot made
moritz the new hardware for the p6 community server has arrived
JimmyZ_ \o/
nwc10 the crazy bit is that I inadvertently demosntrated something that masak figured out - we can ever write NQP's *configuration* system in NQP 10:24
parrot didn't dogfood parrot in any part of the build system
admittedly NQP has a lot of dogfood, being self hosting
moritz next stage: build in to the racks, cabling
nwc10 but it would be good to start to write build systems in the host language 10:25
to find the problems there
brrt ok, fair enough; could we ship an nqp binary yet?
nwc10 brrt: I don't think that it matters
we do. it's "stage0"
brrt true :-)
JimmyZ_ btw: rust doesn't use libuv anyway.
nwc10 I can do this from a *clean* NQP directory: 10:26
../MoarVM/moar --libpath=src/vm/moar/stage0 src/vm/moar/stage0/nqp.moarvm -e 'for nqp::backendconfig() { say(qq{moar::{$_.key}={$_.value}}) }'
brrt i see.. that's nice already
nwc10 it is somewhat mind bending 10:26
brrt yes 10:27
nwc10 the only part of Configure.pl that can't be NQP is the bit that figures out how to find a backend VM
brrt that can be a shell script, but that doesn't work on windows... :-)
brrt although 10:28
what if we'd use the moarvm included minilua to do that
FROGGS let's just use CMake :P
brrt muhahah
nwc10 brrt: I am sort of thinking that actually. 1 shell script, 1 batch file, and one README (for anywhere else)
FROGGS++
FROGGS: I think you can now see what I was up to 10:29
Woodi when I was doing Rakudo on Parrot (probably year ago) I liked standard VM auto-discovery. Mkudo needs switches...
nwc10 dogfood!
FROGGS yeah :o)
moritz nwc10: note that rakudo's and NQP's configure also build the backend(s) for you
nwc10 moritz: bother yes. I forgot that. I remembered that on the tram
brrt doesn't know CMake. at all
nwc10 (on the way to work, thining about it)
pmurias nwc10: maybe we could have the system dependent part in both perl5 and batch script/shell script? 10:54
lizmat jnthn: would you object to $supply.close without parameters closing *all* taps on the supply 12:13
.oO( ADD or Advent Driven Development )
12:14
lizmat multi method close(Supply:D:) { self.close($_) for self.tappers } 12:16
masak nwc10: I think there should be a repository collecting all the todos/milestones towards build system dogfoodhood. 12:22
timotimo moritz: yay hardwares 12:28
dalek k-simple: d8a4d18 | (Timo Paulssen)++ | lib/GTK/Simple.pm6:
quick and dirty implementation of GTK::Simple::Window
12:37
lizmat jnthn: do you think we can guarantee that all taps on a supply will be always run in the order that they were created ? 12:46
Ulti Out of interest is there a reason for the trend of ::Simple in Perl6 when there isn't a normal module yet? My assumption was in P5 it was mostly because name spaces got taken and older APIs were just a massive nest of horror because it was the early 90s... 12:53
tadzik Ulti: I think it's a bit like "I started it as a small project for a single purpose and it accidentally became the Real Thing" :P 12:55
Ulti Email::Simple Auth::PAM::Simple HTTP::Server::Simple when all of the sans ::Simple don't exist just feels kind of odd :S
all modules start simple though
timotimo Ulti: jnthn called it GTK::Simple because he expected someone else would want to build a "proper" binding to replace it :P 12:56
mvuets i guess it might be an excuse to build quick & dirty implementation 12:57
timotimo hehehe
Ulti like I get stressed at the thought of taking Stats already... when I have only five super basic stats functions
timotimo the way i add new stuff to GTK::Simple is pretty darn random 12:58
Ulti I understand the impulse for ::Simple but it just looks a bit silly on the modules listings :P 12:58
in fact I'd go as far to say that all the ::Simple are the non simple modules lol
as in they are harder things to implement 12:59
timotimo i'm not ready to commit to being a full-blown proper bona fide library author and stuff
Ulti lol
but you're comfortable being a core language hacker :D
I think a lot of people will eventually grok Rakudo internals because it's all in a language the users know :) 13:00
timotimo nah, because you can't get far without becoming a core hacker! oh, wait, that was 2010 :P 13:01
Ulti yeah a no. of modules with time plot might be quite interesting I guess you can get that from the manifest file 13:04
I was shocked when I finished writing a P6 module to do soundex that it was already on there :) so now I'm working on some extra phonetic algorithms 13:05
lizmat www.extremetech.com/extreme/195317-...live-video 13:19
T minus 8 minutes
T minus 5 13:22
colomon lizmat: did you come up with a topic for a post? 13:23
lizmat Supplies
colomon cool
hold again on the launch? 13:24
lizmat yes, sounds like it
just over 1 hour of launch window left 13:26
masak .oO( the topic is a bit of a Supplies ) 13:32
lizmat fwiw, I'm actually writing a test-file to go along with it, so people can more easily play with the code 13:33
smls o/ 13:34
lizmat smls \o
smls lizmat: Why is you IO advent post no longer listed? I was looking forward to that... :) 13:35
lizmat so was I, but I felt the timing was wrong
maybe in ~ 10 days 13:36
smls ok
masak <placeholder for joke about how I/O is all about sequencing and side effects> 13:39
smls .seen ab5tract 13:40
yoleaux I saw ab5tract 00:21Z in #perl6: <ab5tract> so, goodnight #perl6! i hope the post does the calendar justice. usually it's the first thing i read on a December morning.. weird to have already read it :)
smls .tell ab5tract The subheadings in your advent post should all be demoted by one level (h2-->h3, h3-->h4), because the post title automatically becomes a h2, which makes h2 subheadings look slightly awkward on the post's own page, and *very* awkward on the front page which shows the most recent articles. 13:41
yoleaux smls: I'll pass your message to ab5tract.
masak ab5tract: I like how your post is basically about a personal journey. 13:42
ab5tract: nit: the fact that `BUILD` is all-caps has nothing whatsoever to do with Huffman coding. its length would be unchanged if it was spelled not-in-all-caps. 13:46
lizmat masak: it's one more keypress
masak right. anyway, the argument can not be made that it "shares Huffman coding". 13:47
such an argument could maybe be made if we named it `Bui` or something, to be just as prominent as `Int` and `Str` and `Num`. 13:48
moritz right, it's about standing out, not about length 14:03
timotimo to be fair, the supply of allcaps words is kind of limited 14:03
FROGGS moritz: length is banned in Perl 6, please use something else :o9
err, :o) 14:04
moritz FROGGS: chars :-)
masak Huffman coding *is* about length. it's used both in the shortening and lengthening direction, though. (and called "de-Huffmanization" when something was deemed too short for its relative unimportance.) 14:11
my point is that making `BUILD` all-caps has nothing to do with its length and nothing to do with Huffmanization.
lizmat launch scrubbed for today :-( 14:37
timotimo no perl 6.0.0 launch today? :( 14:38
lizmat Orion's launch 14:39
or more precisely: the Orion Flight Test
www.extremetech.com/extreme/195317-...live-video
masak .oO( will not go to space today ) :( 14:40
arnsholt Aww, Orion cannot into space? =) 14:58
masak vendethiel: sanity check about having understood Gjorde diagram till Git Advanced (Gerrit). 15:03
ergh. 15:04
vendethiel: sanity check about having understood github.com/jashkenas/coffeescript/pull/3171 correctly.
lucas___ m: my @a = 1,Nil,2; say .WHICH for @a
camelia rakudo-moar 6edc31: OUTPUT«Int|1␤Int|2␤»
masak macro.codeToNode takes a function as input, and returns an AST of the function. 15:05
lucas___ So, will Nil disappear or be there in the future?
masak this AST has a .subst method, which allows substitution of symbols. it's exclusively used to bind the macro's parameters to local variables inside the function. 15:07
essentially .subst is a kind of s:g/// on the AST node level. I'm guessing/hoping it even respects lexical shadowing. 15:09
um, provided coffeescript has that. I forget. 15:12
ooh, and there's also macro.valToNode, whose use should be obvious.
masak gets lost trying to confirm his suspicions about what the {c1,c2,c3,c4} object literal shorthand means in cs 15:23
anyway, there's something here that's pretty similar to the way we do it in Perl 6. 15:24
that is, a macro is something that returns an AST.
masak when the macro gets invoked, at parse-time, it runs, produces its AST, and that AST is spliced into the code being generated, in place of the macro call. 15:25
masak actually, the biggest difference seems to be that vanviegen++'s macros ditch quasi quotes and unquoting, and go with .subst-from-the-outside instead. 15:38
dalek ake: bbe35be | (Arne Skjærholt)++ | t/class.t:
Add simple test file for classes.
15:41
ake: 3fb29bb | (Arne Skjærholt)++ | src/ (3 files):
First stab at function objects.
masak arnsholt++ 15:53
treehug88 is christmas coming? 16:03
masak faster than you might think.
treehug88 one can dream 16:03
arnsholt Christmas is already here, it's just unevenly distributed 16:04
(With apologies to William Gibson =)
masak it might be that not only is Christmas unevenly distributed, but the time-derivative of Christmas is also unevenly distributed... 16:05
thus, for some, Christmas is coming quite fast, for others it's coming more slowly, and for yet others, Christmas might be receding. 16:06
hoelzro o/ #perl6 16:09
Rakudo doesn't support destructors yet, does it? 16:11
lizmat t supports DESTROY on moar, if you mean that
hoelzro that's exactly what I mean =) 16:12
that's non-determinstic, right? 16:13
hoelzro does Perl 6 have something like using(...) in C# or with in Python? 16:13
lizmat yes
arnsholt given($foo) { ... }
lizmat m: class { method DESTROY { say "goodbye" } }.new
camelia ( no output )
lizmat although I don't think you can rely on DESTROY being called at all, apparently 16:14
hoelzro: I'm not sure what you mean with given($foo) { ... }
it seems to have superstitious parens at the least :-) 16:15
arnsholt Oh, whoops
That's me not programming enough Perl 6
hoelzro with in Python guarantees that __exit__ will be called on an object before the block exits
I *think* that my $something will close = ... would do it
but I'm wondering if there are other ways
arnsholt Oh, right. Given doesn't do that stuff 16:16
lizmat m: my $a will leave { say "goodbye" } 16:16
camelia rakudo-moar 6edc31: OUTPUT«goodbye␤»
lizmat is that what you mean?
masak superstitious parens, and if you actually write it without a space: `given($foo)`, then Perl 6 will go off looking for a &given sub. 16:17
hoelzro lizmat: yes
masak m: my $foo = 42; given($foo) { .say }
camelia rakudo-moar 6edc31: OUTPUT«===SORRY!===␤Word 'given' interpreted as 'given()' function call; please use whitespace instead of parens␤at /tmp/hc1U_XfXgw:1␤------> my $foo = 42; given⏏($foo) { .say }␤Unexpected block in infix position (tw…»
hoelzro LEAVE { $a.close } would do it too, right?
masak m: my $foo = 42; given($foo); sub given($) { say "OH HAI" }
camelia rakudo-moar 6edc31: OUTPUT«OH HAI␤» 16:17
lizmat m: LEAVE say "goodbye" 16:18
camelia rakudo-moar 6edc31: OUTPUT«goodbye␤»
lizmat the "will leave" syntax is mostly syntactic sugar
hoelzro mkay 16:20
and NativeCall - I forget, does it support callbacks?
colomon hoelzro: pretty sure yes 16:21
arnsholt You can pass a Perl 6 sub to C
lizmat hopes someone else will be able to answer that one as she s a complete NativeCall noob
arnsholt But can't invoke function pointers returned from C
hoelzro arnsholt: that's acceptable
that's in jnthn's repo?
arnsholt Yeah
hoelzro cool =) 16:22
hoelzro I'll see if I can update the README 16:22
arnsholt: what's the invocation for that look like?
hoelzro let's say I have a C function set_callback(int (*cb)(void *, const char *)) 16:22
arnsholt Err, can't remember off-hand. There's a test file you can look at
hoelzro ok, cool
that'll do fine
masak who wants to grab Tuesday and Wednesday next week? github.com/perl6/mu/blob/master/mi...4/schedule 16:45
er, Tuesday *or* Wednesday, I should say.
flussence ooh, this is cool: www.qemu-advent-calendar.org/ 17:10
moritz recently learned that KVM uses qemu to run its guest machines 17:38
ab5tract masak: re: huffman coding.. i never thought of it as entirely length based 17:44
yoleaux 13:41Z <smls> ab5tract: The subheadings in your advent post should all be demoted by one level (h2-->h3, h3-->h4), because the post title automatically becomes a h2, which makes h2 subheadings look slightly awkward on the post's own page, and *very* awkward on the front page which shows the most recent articles.
TimToady either
ab5tract .tell smls takend care of :)
yoleaux ab5tract: I'll pass your message to smls.
ab5tract TimToady: i probably got that impression from you then :) 17:45
TimToady I think BUILD is at least twice as hard to type, because you have to hold down the shift while typing 17:45
if you've disabled caps lock like me
even if not, that's two extra keys
Huffman Coding is really just shorthand for "easy things should be easy, and hard things should be possible" 17:46
and BUILD is harder than build :)
the length (oops) of a keyword is just one manifestation of the general principle 17:47
there's also the reader's mental energy of processing and/or ignoring, which is also higher for BUILD than for build
on some level 17:48
though if someone wrote 'method build' it'd certainly be a head scratcher :)
ab5tract :)
ab5tract i guess i always had some implicit understanding of 'shortest way to encode a meaning consistently' .. so '*' means whatever, which means when you see it doing in a signature, it still means that, but in a contextual way that means 'whatever args, put in a single list' 17:50
but clearly from the wikipedia description, that's stretching the original meaning quite a bit 17:51
TimToady kind of a glob there
but a glob is a kind of whatever 17:52
ab5tract :)
TimToady or maybe kind of a multipler in a sig
*plier
"can match more than one"
also see regex
TimToady "can match more than zero" is more better 17:52
but in all cases, still kinda means "you figure this out, not me" 17:53
and ** kinda means "you figure these out harder" 17:54
karb TimToady: As per pmichaud's blog on GLR, $list.map(&block) iterates $list's contects and map(&block, $list) iterates once applying &block once on $list. Is this because methods are considered privileged subs that can "look into" the list object's contents? 18:04
TimToady it's because methods pay no attention to the $ vs @ distinction, while list flattening pays a great deal of attention to it 18:07
karb Okay. But in this case it is more about whether a block is applied on the contents of the container vs the block being applied on the container itself 18:09
I could not link the list flattening with this view 18:10
moritz but that's what it's all about
map(&block, $L1, $L2, $L3) will apply &block to $L1, $L2, $L3
independently of what's inside those $Ls 18:11
because the $ tells it "it's an item, don't look inside"
so, it doesn't flatten them, even if they are lists
whereas for $L.map(&block), to a first approximation, the .map method doesn't even see that it's from inside a container 18:12
because the method is dispatched on the value inside the container, not on the container
karb Okay. I was looking at list flattening as applicable only in converting map(&block, ($L1, $L2, $L3)) to map(&block, $L1, $L2, $L3)
moritz karb: the rabbit hole is deeper :-) 18:14
karb I see that :-)
TimToady (...) is comparable to @list there, while [...] would be comparable to $list 18:17
vendethiel masak: sorry, but my backlog is cut here :P /me goes to irclog.perlgeek.de 18:20
masak: but from what I read, "yes"
TimToady it's sort of the singular/plural distinction that is more natural in British English than in American English: "The committee is tasked with deciding this." vs "The committee are largely undecided on this." 18:22
TimToady in Perl 6 this is conveyed with $committee vs @committee, without reliance on which verb you choose 18:23
TimToady method dispatches, by their nature, however, are naturally singular 18:23
TimToady so @ corresponds more to the "members of the committee" that an American would feel compelled to circumlocutalize with 18:25
karb so method dispatches would naturally keep the structure
TimToady it's like the difference between argument processing on Unix vs Windows 18:26
in Windows the process has to do all the work, while in Unix, the shell does most of the work
well, at least old-time windows, dunnow about powershell 18:27
karb why does map(&block, $L1, $L2) not flatten $L1 and $L2 into a single list 18:27
TimToady because you told it not to
TimToady that's what $ means 18:28
karb with $ ?
okay
TimToady Perl 6 inflects its nouns for singular/plural
TimToady well, Perl does, in general 18:41
NotJack coming from APL/J/K, I'm now unused to making the distinction between singular and plural 18:49
TimToady well, everything is plural there :) 18:50
NotJack year
yeah
singular/plural seems to me like inflecting my verbs to agree with the color of my interlocutor's hair
weird and irrelevant
TimToady in Japanese you inflect your verbs to agree with the status of who you're speaking to, and who you're talking about :) 18:51
NotJack so is it *grammatically* wrong to say "Hey dude!" to the Emperor? 18:52
TimToady basically :)
NotJack in some Amazon basin languages I believe there are inflections for communicating how you *know* whatever you're discussing 18:54
first hand information, hearsay, information from a trusted informer, etc
TimToady and in some African languages too
NotJack I guess because they don't have written records?
arnsholt French does it as well, in newspaper language 18:55
Using the conditional to mark uncertain knokwledge
TimToady we inflect those with "I hear...", "I was told...", "I know" etc. along with our vestigial subjunctives 18:56
and our modals, of course 18:57
"I might" is arguably our optative
Anyway, languages differ not so much in what you can say, as in what you have to say. 18:58
and Perl requires you to say singular or plural, except when it doesn't
TimToady and languages that don't have mandatory number still have ways to express that when necessary 19:00
just as we still can distinguish a pair of oxen from 3 or more, despite having lost the dual 19:01
I suppose it's not surprising that Ruby uses the Japanese approach to pluralizing, while Perl uses the English. :) 19:02
ab5tract "except when it doesn't" -- these kinds of statements always make me want to see an example :) 19:03
TimToady my \foo = something(); say foo 19:04
depends on whether something returned a $ or a @
m: my \foo = (1,2,3); .say for foo 19:06
camelia rakudo-moar 6edc31: OUTPUT«1␤2␤3␤»
TimToady m: my \foo = [1,2,3]; .say for foo
camelia rakudo-moar 6edc31: OUTPUT«1 2 3␤»
timotimo who let this language nerd in here :) 19:10
masak vendethiel: having mulled over it for dinner, I think I have a fairly clear picture about the risks of the substitution thing. 19:13
TimToady everyone, apparently
timotimo \o/
masak TimToady: welcome! :D
vendethiel: gonna write it up.
vendethiel masak: nice :-)
TimToady he didn't say they were acceptable risks, or that he'd write it up well... :P 19:14
vendethiel masak: (I was just pointing you to it because it's a similar approach, not because it's a good one)
masak nodnod
don't worry, I won't scapegoat anyone. 19:15
masak cackles
vendethiel looks up "cackling"
TimToady makes his escape 19:17
masak "To make the shrill cry characteristic of a hen after laying an egg." 19:20
"To laugh or talk in a shrill manner." 19:21
lizmat "chicken" ! 19:22
moritz just set up a kvm guest locally, to practice for the p6c server 19:31
dalek rl6-roast-data: 15641dd | coke++ | / (5 files):
today (automated commit)
rl6-roast-data: 879ce71 | coke++ | / (5 files):
today (automated commit)
colomon moritz++
moritz the server has been mounted in the rack today, and cabled 19:39
so it just waits for me to show up and configure
colomon \o/ 19:41
[Coke] parrot clean, still failures on moar (jit and non jit failing differently) 19:47
dalek ake: 42ad961 | (Arne Skjærholt)++ | src/Snake/Metamodel/ClassHOW.nqp:
Dead code removal.
19:49
ake: e635745 | (Arne Skjærholt)++ | src/Snake/Metamodel/ClassHOW.nqp:
Stub in a cheaty stringification for Python objects.
ake: 06becc4 | (Arne Skjærholt)++ | src/ (2 files):
Simpler builtin function handling.
lizmat [Coke]: I assume the failures are different every run ?
[Coke] lizmat: I can check a few. 19:51
pretty much. some overlap, not much. 4 days ago we had a clean run 19:54
(looking at -jit only
lizmat on OS X, right ? 19:55
[Coke] yes. 19:56
lizmat at the Amsterdam.PM meeting I was talking about this 19:58
lizmat and someone suggested we should at least try switching off memory compression to see whether that makes a difference 19:58
[Coke] lizmat: trying that now 20:02
lizmat can you do that without a reboot ?
masak m: macro swap($a, $b) { quasi { ({{{$a}}}, {{{$b}}}) = {{{$b}}}, {{{$a}}} } }; my $w = 5; my $z = 10; swap $w, $z; say [$w, $z].perl
camelia rakudo-moar 6edc31: OUTPUT«[10, 5]␤»
masak \o/
[Coke] lizmat - nope, reboot required 20:05
lizmat yeah, thought so :-(
waiting for a good time to try that myself :-)
[Coke] lizmat; of course, everything feels slower now. :) 20:06
lizmat is it that noticeable ? 20:06
[Coke] if that's what it is, what the hell do we do to fix it?
spec test passed 1005 20:08
er, 100%
lizmat so, no problems all of a sudden ?
colomon what's the memory compression thing?
[Coke] I don't normally run with make spectest, I use test_summary, but did TEST_JOBS=12 make spectest and no errors.
lizmat wow
[Coke] this -without- a rebuild.
colomon try with test summary? 20:09
lizmat I was thinking that maybe *memory* pressure would be the reason for failings
rather than CPU pressure
and memory pressure would result in compression I gues
so I'm wondering whether we wouldn't need some flag to clang to make it safe 20:10
hoelzro is there a way to tell NativeCall "hey, don't free this string" 20:11
I see that 08-callbacks.t uses strdup to kind of get around this
[Coke] lizmat: memory compression shouldn't be altering the behavior of -any- program, I would think. 20:16
my academic friend suggests we bugreport this to apple.
(test summary isn't multi-threaded, this will take a while)
lizmat perhaps we should report it, yes 20:17
[Coke] Let's see if you can reproduce the finding.
lizmat after I finish my advent post 20:18
:-)
[Coke] aha. no, I'm still getting malloc errors with test_summary 20:19
lizmat ah, ok well, it was a thought :-) 20:20
timotimo hoelzro: is managed or something is the name of the trait
hoelzro timotimo: the only Parameter trait I see that applies to Parameters deals with encodings 20:22
timotimo oh 20:23
timotimo worst case: create it as a buf of int8 20:23
hoelzro hmm, good idea 20:24
timotimo oh 20:25
hm, no, nativecasting it to a CArray wouldn't work
hoelzro no? 20:26
timotimo probably not
hoelzro well, I see that strings in src/core/nativecall.c in MoarVM are always freed if they're parameters
which seems wrong for callbacks
libraries that use callbacks tend not to require callbacks to clean up a string themselves 20:27
timotimo maybe the answer is "if you want a long-living blob of characters, you really want a CArray rather than a Str coerced into a CString"
ugexe ab5tract++ 20:38
hoelzro ab5tract++ indeed 20:41
arnsholt hoelzro: There's explicitly-manage (or something like that) 20:46
To prevent too early frees 20:47
Is ugly as hell, but sort of works
hoelzro ah, sure enough
I see it's not a trait
arnsholt There are a lot of rough edges in NativeCall, once you start doing real things
hoelzro I was thinking it'd be something like Str is dont-free
timotimo ah, it's not a trait, it's a sub
arnsholt Yeah 20:48
The "correct" (FSVO correct) way to handle strings would be encoding the string into Buf, copying the Buf into a CArray and then passing that off to C 20:50
moritz why not encode straight to a buf8? 20:58
vti this code hangs rakudo+moarvm: perl6 -e 'my $re; $re = rx/$re/; say 1.match($re)' 21:05
lizmat same problem as: 21:05
m: my @a; @a[0] = @a; @a.perl 21:06
arnsholt moritz: buf8 is a Buf, isn't it?
camelia rakudo-moar 6edc31: OUTPUT«(timeout)»
jnthn No, it's not. The latter is potentially fixable. The first is a straight out infinite recursion.
hoelzro arnsholt: isn't that kind of what NativeCall does?
arnsholt No, NativeCall doesn't handle any of that stuff ATM 21:07
jnthn vti: What did you expect it to do? It's a pretty obvious "will never terminate" to me...
lizmat perhaps a /"$re"/ ?
vti jnthn: i thougt rx// is smth like qr//, i wanted to compile a regex from a string 21:08
jnthn vti: /<$the_string>/ and don't re-use the same var for the regex and the string. :) 21:09
It should be smart enough to cache it after first evaluation, iirc.
vti jnthn: ah 21:11
jnthn: thanks
arnsholt hoelzro: NativeCall *should* handle it though. If you extend it do handle that stuff a PR would be excellent 21:15
vti jnthn: that's because of 'my $foo = $foo++' thing?
jnthn: so $rx on the right is already a regex 21:16
hoelzro arnsholt: I already have a list of things I want to do with it =) 21:17
jnthn The latter part is true, the first one I'm not sure I see quite so much... The way I think of it is that since regexes are first class in Perl 6, then a regex referring to a variable outside of it is just a closure.
jnthn Uh, first class *code objects* is probably what I wanted to say :) 21:18
arnsholt hoelzro: Sounds excellent! 21:20
hoelzro: OOC, what're you working on wrapping?
vti m: say my $foo = $foo++ + $foo--
camelia rakudo-moar 6edc31: OUTPUT«1␤»
lizmat $ perl -E 'say my $foo = $foo++ + $foo--' 21:21
1
hoelzro arnsholt: libexpat 21:22
lizmat if a problem, it seems to be consistent across Perl versions :-)
vti lizmat: yeah, but use strict ;)
arnsholt hoelzro: Ooh, XML::Parser
leedo_ vti: maybe it's more akin to my $f; $f = sub { say "hi"; $f() }; $f(); 21:23
dalek ast: ab81dfb | usev6++ | S04-statements/for.t:
Add test for RT #123005
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123005
jnthn leedo_: Yes, that nicely captures what I was trying to say :)
jnthn gets an early night 21:24
o/
lizmat gnight jnthn! 21:25
hoelzro arnsholt: yeah, I need something that supports SAX that doesn't keep the whole tree in memory; afaik, grammars can't do that (yet)
vti leedo_: thanks, that makes sense.... after you know it %)
hoelzro so, one can use 'is rw' to create a setter on an attribute; is there a way to do something with the value after someone has called $obj.value = $value? 21:30
like a trigger of sorts?
lizmat draft for tomorrow's blog post: gist.github.com/lizmat/672dd8960a4ee299f447 21:32
comments welcome
hoelzro is there some way to subclass Scalar, perhaps, and return a dummy scalar that would know when a way is being pushed into it? 21:36
ab5tract masak: neat :) 21:37
leedo_ hoelzro: there is that Proxy class, wonder if that would work? 21:38
ab5tract oops, i was scrollbacked.. that was in reference to the macro you passed to camelia
hoelzro leedo_: oh, thanks!
I'll take a look
leedo_ i've not used it but it looks handy-ish :) 21:39
arnsholt hoelzro: Yeah, I think streaming grammars are a way off. Also, writing a proper XML parser in Perl 6 would be a major undertaking
masak lol! I bloggered! strangelyconsistent.org/blog/macros...eholdeeers 21:40
arnsholt Not that wrapping expat is trivial, but less work than an XML grammar, I think
lizmat m: class A { method push(A:U \SELF: *@a) { SELF = @a }}; my $a = A; $a.push(1,2,3); say $a.perl # hoelzro 21:42
camelia rakudo-moar 6edc31: OUTPUT«[1, 2, 3]␤»
hoelzro lizmat: thanks
leedo_: that did the trick! 21:47
leedo_ awesome
lue "Does this whole thing remind you of beta reduction in lambda calculus?" um, sure :) . 21:54
masak I know, right!?
it's uncanny!
lue masak: aren't the key => value substitutions usually done by .trans, or is there something about .subst I didn't know? 21:55
gtodd m: [+]<1 2 3 4 5> 21:58
camelia ( no output )
gtodd m: say [+]<1 2 3 4 5>
camelia rakudo-moar 6edc31: OUTPUT«postcircumfix:<{ }> not defined for type Int␤ in method gist at src/gen/m-CORE.setting:13768␤ in method gist at src/gen/m-CORE.setting:7821␤ in sub say at src/gen/m-CORE.setting:16516␤ in block <unit> at /tmp/N5GbDtE2Af:1␤␤»
lue m: say [+] <1 2 3 4 5>
camelia rakudo-moar 6edc31: OUTPUT«15␤»
hoelzro "All templating syntax sucks." - here, here!
vti the spaces in regexes are ignored, but when interpolating a variable they are not, i guess that's because the spaces are removed during compile time or smth like that... is there any way to tell rx/<$var>/ to ignore spaces in $var? can't find that in docs 21:59
m: my $str = "^foo\$"; my $re = rx/<$str>/; say "foo" ~~ $re
camelia rakudo-moar 6edc31: OUTPUT«「foo」␤␤»
vti m: my $str = "^ foo \$"; my $re = rx/<$str>/; say "foo" ~~ $re
camelia rakudo-moar 6edc31: OUTPUT«Nil␤»
gtodd so I needed a space there 22:00
timotimo ooooh that's interesting
gtodd was wondering since I had no space in the script I have .... 22:01
I had (<1 2 3 4 5>) instead
masak lue: it's AST.subst in this case. the name was borrowed from the CoffeeScript example without much thought as to how appropriate the naming would be in Perl 6. 22:02
gtodd eyes play trix ... need syntax highlighting 22:03
masak 'night, #perl6. will read your ample feedback in the backlog.
gtodd is there going to be a CoffeeSix slang?
errm CoffeeScript for perl6 :-)
night masak 22:04
if you are suggestible I suggest you dream of macros :-)
gtodd not ;-) 22:05
vendethiel gtodd: 'twould be hard :P 22:09
gtodd: current Coffee parser is a mess due to postfixes, and they're even more powerful in p6
tony-o lizmat: is there a mechanism to remove modules in a CURI or do I need to modify the MANIFEST file manually? 22:11
gtodd one day ...
lizmat I don't think there is currently a way to do that 22:12
ab5tract masak: nice post :) 22:16
ab5tract .tell TimToady thanks for the example :) i was puzzling over the \var syntax when I started digging into meta op declaration 22:19
yoleaux ab5tract: I'll pass your message to TimToady.
arnsholt "ooh, Lisp must have been successful because of the parentheses. Let's do them in triplicate!" =D 22:20
masak++
ab5tract speaking of meta ops declarations.. that doesn't feel as smooth as the normal method declaration syntax, at the moment 22:23
colomon we can declare meta ops? 22:24
ab5tract colomon: my point entirely :)
colomon has only ever done it in core. 22:25
gtodd m: say <1 2 3 4 5 10>.max 22:25
ab5tract that's what is seems to take at the moment, aye 22:26
camelia rakudo-moar 6edc31: OUTPUT«5␤»
gtodd m: say "oh hai that's wrong" 22:27
camelia rakudo-moar 6edc31: OUTPUT«oh hai that's wrong␤»
gtodd m: say <1 2 3 4 5 10>.max [+]
camelia rakudo-moar 6edc31: OUTPUT«===SORRY!===␤Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument␤at /tmp/GN33KlInSf:1␤------> say <1 2 3 4 5 10>.max [+]⏏<EOL>␤ expecting any of…»
ab5tract m: say (1,2,3,4,5,10).max
camelia rakudo-moar 6edc31: OUTPUT«10␤»
bartolin that's also RT #112250 22:28
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=112250
ab5tract colomon: is the plan to have that be possible outside the core? 22:29
colomon ab5tract: darned if I know
ab5tract: I'd love that, but it seems like it would be kind of fiddly
ab5tract in fact, it seems like it might be a good story for macros 22:30
colomon could be, yes 22:30
gtodd bartolin: ok thanks ... it's like the <> form is accidentally making lists out of the elements 22:30
lizmat tomorrow's advent post in draft here: perl6advent.wordpress.com/?p=2388&a...ew_id=2388 22:32
gtodd but I'm splittling a line and pushing the number into an array and they are still tricking max into seeing them as strings
.max
lue gtodd: the point of < > is to create an array of strings, e.g. <one two three> instead of ("one", "two", "three") 22:33
stuff like [+] <1 2 3> works simply because infix:<+> tries to coerce its arguments to numbers if they aren't already.
ab5tract colomon: btw, mix 144 mix tests pass :) 22:41
can't claim i did much though. a search and replace and re-intepretation of the test variables, the bag tests fit like a glove 22:42
bartolin lue: so you would say its correct [max] sorts <2 11> lexicographically? 22:43
m: say [max] <a z c>
camelia rakudo-moar 6edc31: OUTPUT«z␤»
bartolin m: say [max] <2 11>
camelia rakudo-moar 6edc31: OUTPUT«2␤»
lizmat yes, because in that context, 2 and 11 are Str
m: say [max] (2,11) 22:44
camelia rakudo-moar 6edc31: OUTPUT«11␤»
ab5tract m: say [max] (2.Str,11.Str) 22:44
camelia rakudo-moar 6edc31: OUTPUT«2␤»
lizmat m: say [max] ("2","11") # same thing 22:45
camelia rakudo-moar 6edc31: OUTPUT«2␤»
bartolin I'll add that to RT #112250
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=112250
colomon ab5tract++ 22:47
lue Unless <2 11> is supposed to be a list of IntStrs, and unless the Int part of IntStr is supposed to win when either part would do, I think [max] <2 11> -> 2 is right.
ab5tract of course, i've replicated my preferred comparator tests ;)
colomon m: say <2 11>.max(+*)
camelia rakudo-moar 6edc31: OUTPUT«11␤»
colomon lue: good point 22:48
n
n: say <2 11>.max
camelia niecza v24-109-g48a8de3: OUTPUT«11␤»
ab5tract i'll do a clean one from the nom behavior
colomon n: say <2 11>[0].WHAT
ab5tract and submit a pl
camelia niecza v24-109-g48a8de3: OUTPUT«(IntStr)␤»
colomon <2 11> is indeed supposed to be IntStrs, unless someone has changed that part of the spec again 22:49
bartolin and IntStr is probably NYI for rakudo ... 22:52
m: say <2 11>[0].WHAT
camelia rakudo-moar 6edc31: OUTPUT«(Str)␤»
colomon so I think lue is right that max is supposed to do what bartolin thinks it should
lue r: say IntStr
camelia rakudo-{parrot,moar} 6edc31: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared name:␤ IntStr used at line 1␤␤»
ab5tract colomon: oof.. actually, the situation is not so rosy. i was mistaken earlier :( 22:55
dalek ast: 4b7c128 | (Elizabeth Mattijsen)++ | integration/advent2014-day05.t:
Tests associated with 20141205 blogpost
22:57
colomon lizmat++
ab5tract in order to be a bit more DRY, i'd like to create a helper function for converting to the correct QuantHash type set_operators.pm 23:00
is it ok to define a local sub a la "my Sub" ? 23:02
lizmat ab5tract: if you do, please make it a long ALL-CAPS name
unfortunately, any my sub in the core, is visible in any code out there 23:03
ab5tract lizmat: no thanks then :( 23:04
lizmat well, if you look in the core settings, you will see that you wouldn't be the first 23:05
so I think for simplification of the set_operators code would warrant such a transgression
ab5tract my original plan was to do it as a meta op :) 23:06
lue lizmat++ # advent post 23:11
lizmat m: say 15 %% 3|5 # this feels like a bug 23:17
camelia rakudo-moar 6edc31: OUTPUT«any(True, 5)␤»
lizmat m: say 12 == 3|5 # this seems ok
camelia rakudo-moar 6edc31: OUTPUT«any(False, False)␤»
lizmat huh? 23:18
lue Looking at the chart, it is a bug: perlcabal.org/syn/S03.html#Operator_precedence
lizmat m: say 12 %% 3|5 # this seems ok
camelia rakudo-moar 6edc31: OUTPUT«any(True, 5)␤»
lizmat m: say 10 %% 3|5 # this seems ok
camelia rakudo-moar 6edc31: OUTPUT«any(False, 5)␤»
lue Or not, I'm silly.
lizmat advent post scheduled for 0:01 UTC 23:19
colomon m: say 15 % 3|5
camelia rakudo-moar 6edc31: OUTPUT«any(0, 5)␤»
colomon m: say 15 %% 3|5
camelia rakudo-moar 6edc31: OUTPUT«any(True, 5)␤»
colomon m: say 15 %% 5 23:20
camelia rakudo-moar 6edc31: OUTPUT«True␤»
colomon m: say 15 %% 3 23:20
camelia rakudo-moar 6edc31: OUTPUT«True␤»
lue m: say 15 %% (3|5) 23:20
camelia rakudo-moar 6edc31: OUTPUT«any(True, True)␤»
colomon totally looks like a bug 23:22
a very odd one at that
n: say 15 %% 3|5 23:23
camelia niecza v24-109-g48a8de3: OUTPUT«any(Bool::True, 5)␤»
colomon huh. at least they're consistent?
lue The precedence table I linked shows that it's the correct behavior; %% is tighter than | 23:24
colomon oh! 23:25
lizmat perhaps it shouldn't be tighter ?
colomon you're right, I wasn't looking at the results correctly
m: say 15 % 3|5
camelia rakudo-moar 6edc31: OUTPUT«any(0, 5)␤»
colomon second value is just 5
lizmat: I don't think so 23:26
lizmat well, it was a WAT for me
colomon because we want to be able to say things like 2 * $delta | 3 * $delta
and have it mean 2 * $delta or 3 * $delta rather than 2 * ($delta | 3) * $delta 23:27
lizmat I was thinking about adapting the level of %%, rather than | 23:29
as %%'s behaviour seems faulty to me
lue I'd say %% is a test operator rather than a multiplicative operator, despite its appearance. 23:30
lizmat agree
lue So perhaps knock it down to "C Chaining infix" ?
lizmat m: say 12 == 12|13
camelia rakudo-moar 6edc31: OUTPUT«any(True, False)␤»
lizmat so why does it work ok for == and not %% ? 23:31
lue Or somewhere around there, at least.
== is in the "Chaining infix" level, thus looser than |
lizmat I expect TimToady will want to chime in on that
colomon %% doesn't chain 23:32
lue I'm not %% should/could be chaining, but I think somewhere underneath | at least.
*not sure 23:33
colomon I'm not at all convinced. 23:34
dalek kudo/nom: 4c353cd | (Elizabeth Mattijsen)++ | src/core/Supply.pm:
Add Supply.close to close all known taps
kudo/nom: da7ff70 | (Elizabeth Mattijsen)++ | t/spectest.data:
Add 20141205 advent tests
lue m: say "a" eq "a"|"b"
camelia rakudo-moar 6edc31: OUTPUT«any(True, False)␤»
dalek kudo/newio: dd27056 | TimToady++ | tools/build/NQP_REVISION:
bump nqp
rakudo/newio: 8651016 | TimToady++ | tools/build/NQP_REVISION:
rakudo/newio: bump nqp
colomon the 23:35
lizmat sorry dalek
colomon the thing is, I'm pretty sure moving %% down can actually change the meaning of (junction-less) math expressions. 23:36
lue As I understand it, the "testing" operators are all looser than junctions, so I think %% (an operator that tests) should be moved to their level.
colomon m: say 34 %% 3 + 1 23:37
camelia rakudo-moar 6edc31: OUTPUT«1␤»
lue colomon: % is a math operator, %% isn't (unless you consider converting a Bool to 1 or 0 part of math) 23:38
colomon m: say 34 % 3 + 1
camelia rakudo-moar 6edc31: OUTPUT«2␤»
dalek : 412970c | (Elizabeth Mattijsen)++ | misc/perl6advent-2014/schedule:
Claim day #19, fix day #5
lizmat calls it a day... advent post should be visible in 20 mins 23:39
lue lizmat o/
colomon yeah, it isn't really comfortable thinking of %% as a math operator, I guess, because it takes you out of the realm of math 23:45
lue To be fair, it's a fairly specialized test operator, for a built-in at least :) . 23:47