»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! | feather will shut down permanently on 2015-03-31
Set by jnthn on 28 February 2015.
dalek kudo/newio: d7c8a39 | lizmat++ | src/core/IO/Dup.pm:
Making $*IN special is not such a good idea
00:10
dalek kudo/newio: 8a5309b | lizmat++ | src/core/IO/Pathy.pm:
Add :strip parameter to IO::Pathy.basename
00:31
japhb avuserow: THANK YOU! 00:45
japhb When FROGGS pushes the nqp bump, it ought to be relatively easy to get readlink working in r-j, and then I can vastly simplify the setup work I'm putting on my users. :-) 00:47
Mouq m: sub intify (Int(Numeric()) $a) { $a }; say intify "abcd" but role { method Numeric { 42e0 } } 01:21
camelia rakudo-moar 418c1f: OUTPUT«Type check failed in binding $a; expected 'Numeric(Any)' but got 'Str+{<anon>}'␤ in sub intify at /tmp/3uCk1G83CB:1␤ in block <unit> at /tmp/3uCk1G83CB:1␤␤»
Mouq m: sub intify (Int() $a) { $a }; say intify "abcd" but role { method Numeric { 42e0 } }
camelia rakudo-moar 418c1f: OUTPUT«42␤»
Mouq m: sub intify (Int() $a) { $a }; say intify my class :: { method Numeric { 42e0 } } 01:23
camelia rakudo-moar 418c1f: OUTPUT«No such method 'Int' for invocant of type '<anon>'␤ in sub intify at /tmp/WfAJtGbSna:1␤ in block <unit> at /tmp/WfAJtGbSna:1␤␤»
grondilu TimToady: I struggled a bit with the '+ 1' in [email@hidden.address] + 1)'. There should be a more elegant way to do it (without the magic '+ 1'). Maybe add a comment?
Mouq doesn't know if nested coercers are supposed to work or not
grondilu TimToady: also, it may be required to deal with negative values. 01:52
if self < 0 { return "-$_[0]", .[1] given (-self).base-repeating($base) } # or something like that. 01:53
m: say (-1/6).base-repeating.perl 01:56
camelia rakudo-moar 418c1f: OUTPUT«("-1.8", "3")␤»
grondilu m: say (1/6).base-repeating.perl 01:57
camelia rakudo-moar 418c1f: OUTPUT«("0.1", "6")␤»
J-L Anyone know what the Perl6 equivalent to Perl5's Storable module is? 01:57
grondilu doubts there is any. 01:58
I don't think there is a serialization standard in P6 02:00
grondilu there are .perl and EVAL, though. 02:01
colomon there is a PerlStore module, but I don’t know that it really does anything you cannot do with .perl and EVAL 02:02
timotimo is going to place a cache into spesh that'll get data allocated in spesh mem blocks way down 02:03
well, perhaps not "way down"
i'll have to measure either way. 02:04
J-L Well, on the comp.lang.perl.misc newsgroup, there has been a lot of talk about how important it is to store data to disk using Storable (instead of Data::Dumper, which then is read in and eval()ed). It's considered dangerous to eval() code that is read from disk, for reasons given in the discussion. 02:06
Mouq J-L: Definitely… 02:08
I wonder if we can't do something with NativeCall… 02:09
Or if that's just a dumb idea :P
grondilu well, yeah. Using .perl and EVAL is not the best. I believe usually data could be stored as JSON, BSON, YAML or whatever. Storable makes it possible to store a perl variable 'as is' but that's probably overkill in most cases. 02:15
timotimo should put "HOORAY!" at the end of debug output lines more often 02:17
timotimo hmm 02:22
that awkward moment when you notice the memory usage of perl6 -e 'say 1' isn't impacted by your awesome optimization ... 02:23
timotimo oh, haha 02:24
timotimo turns optimization back on
aaw. doesn't seem much better :( 02:27
avuserow looks like there are 66 split paths between moar and jvm in rakudo's code base. wonder how many of those are NYI versus long term solutions. 02:59
avuserow J-L: I've been wanting a port of something like Sereal for Perl 6, or something is that somewhat language independent 03:01
J-L: github.com/Sereal/Sereal in case you haven't seen it 03:02
timotimo yeah, sereal would be neat 03:08
avuserow in fact, that's why I started playing with Snappy a year ago, though didn't get past that point 03:11
japhb: from what I can tell, nqp::readlink is only used in rakudo's IO.resolve. It's guarded by an 'if moar', and after I tried to remove that, it gave me an error mentioning AT-KEY 03:14
so I don't know what to make of that. hopefully someone else does.
timotimo oh, yeah, why not run a perl6 script over a log file with 2 million lines 03:42
that'll surely work out super well
avuserow what went wrong? 03:44
timotimo it didn't finish before i ran out of patience
timotimo it grew to 2.6 gig until that point 03:45
avuserow are you doing regexes in a loop? I noticed that having huge memory issues on moar but not so much on jvm
timotimo and iall i was able to tell was i didn't reach the 88% point yet 03:47
avuserow j: say "alive?" 03:48
camelia rakudo-jvm 418c1f: OUTPUT«Can't open perl script "/home/camelia/jvm-rakudo/eval-client.pl": No such file or directory␤»
avuserow :(
timotimo but now i added a cancel mechanism in there; hit ctrl-c at any point and it'll abort, but still output the stats 03:52
(and it gives somewhat of a progress indication) 03:54
timotimo whoops. something i did broke the profiler it seems 04:03
raiph m: class c1 { has $.a1 }; class c2 { has $.a2; c1.new: a => { $!a2 } } # nice error msg 04:12
camelia rakudo-moar 418c1f: OUTPUT«5===SORRY!5=== Error while compiling /tmp/sMsSOX4r50␤Variable $!a2 used where no 'self' is available␤at /tmp/sMsSOX4r50:1␤------> 3class c2 { has $.a2; c1.new: a => { $!a27⏏5 } } # nice error msg␤»
raiph m: class c1 { has $.a1 }; class c2 { has $.a2; c1.new: a => method { $!a3 } } # shouldn't be looking in c2 04:13
camelia rakudo-moar 418c1f: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Njm8v_x6IY␤Attribute $!a3 not declared in class c2␤at /tmp/Njm8v_x6IY:1␤------> 3 { $!a3 } } # shouldn't be looking in c27⏏5<EOL>␤»
raiph m: class c1 { has $.a1 }; class c2 { has $.a2; c1.new: a => method { $!a2 } } # shouldn't be looking in c2 either
camelia ( no output )
raiph ^^^ Am I right? (I'll file a bug tomorrow if so.) 04:17
Mouq WTF 04:46
*sorry, had an issue with screen 04:47
Mouq As I was saying… WTF is the point of the Iterator role, if we don't have an iteration API? 04:48
Mouq ListIter has .nextiter 04:48
Mouq No, wait, Iterator is a class… 04:48
Gah, call me when the GLR's done :P 04:49
Anyway, XY and all, I'm making &hyper (used for, e.g., (1,(2,3)) »+« (4,(5,6))) more correct 04:51
It would be really convenient to just be able to say "my \result = eager for ^elems { my \l = left.nextiter; my \r = right.nextiter }" 04:52
But I suppose I've played with Rust too much :P
Mouq Something a little different that always messes me up: 04:56
m: my @a = 1,2,3; say @a.Parcel.perl # WTF
camelia rakudo-moar 418c1f: OUTPUT«(ListIter.new(),)␤»
Mouq I understand it being ListIter.new(), that's fine… Why is it (ListIter.new(),)? 04:57
m: my @a = 1,2,3; say @a.Parcel.elems 04:58
camelia rakudo-moar 418c1f: OUTPUT«1␤»
Mouq m: my @a = 1,2,3; say @a.Parcel[0].elems
camelia rakudo-moar 418c1f: OUTPUT«3␤»
dalek kudo-star-daily: 6155353 | coke++ | log/ (9 files):
today (automated commit)
05:39
[Coke] Testing modules/Grammar-Profiler-Simple with /home/coke/sandbox/rakudo-star-daily/star-jvm/rakudo-star-daily/install/bin/perl6-j... 05:49
java.lang.StringIndexOutOfBoundsException: String index out of range: -3
few more failures in github.com/coke/rakudo-star-daily/...odules.log
avuserow we have a grammar profiler? that's potentially useful. 05:59
dalek pan style="color: #395be5">perl6-examples: c93ef3d | (Yichun Zhang (agentzh))++ | categories/interpreters/calc.p6:
added a simple infix arithmetic calculator.
06:08
pan style="color: #395be5">perl6-examples: 8d0fa38 | 唐鳳++ | categories/interpreters/calc.p6:
Merge pull request #18 from agentzh/calc

added a simple infix arithmetic calculator.
masak 'morning, #perl6 06:33
arnsholt G'day! 06:47
dalek kudo/nom: ee72bd3 | FROGGS++ | tools/build/NQP_REVISION:
bump nqp rev for readlink on jvm, avuserow++
07:38
psch \o 07:46
FROGGS_ o/ 07:47
masak \o
moritz \o/ 07:48
masak yay 07:49
psch apparently the failure in S02-types/native.t on jvm happen because .args on the capture passed into the sub is null
psch to expand on that: «sub f(int $x is rw) { }; my int $x = 1; f $x» NPEs in add_to_cache, where capture.args[0] is null 07:50
which points somewhere inside find_best_dispatchee, which is a bit of a beast 07:51
(also hard to put debug-says into, because it's called a few hundred or so times during any script...) 07:53
FROGGS_ psch: about the uri failure: gist.github.com/FROGGS/5646d051dca96e3f879f 07:54
now I just need guidance from jnthn++ to out that patch into the right place... 07:56
s/out/put/
psch only heard scary things about priorInvocation 07:57
FROGGS_: i don't think i'm qualified for an opinion whether that's workable :) 07:58
FROGGS_ psch: well, it fixes it :o) 07:59
so we need an additional "fixup_outers" step, like moarvm has (though, moar is kinda different in that area)
psch FROGGS_: right, in general "it works" is obviously good. i meant to say that i also don't know if that's the right spot 08:00
FROGGS_: the patch i had fixed it when looking for the outer. i assume SerializationReader builds the chain, which makes it probably at least a better spot than i had 08:01
lizmat good *, #perl6! 08:03
moritz \o lizmat 08:04
masak top of the * to you, lizmat! \o
psch o/ lizmat
lizmat will be mostly offline today 08:05
lizmat notices bare startup gone up from .205 to .26, a 25% move for the worse :-( 08:08
I suspect Moar/nqp is to blame for this
FROGGS_ huh
lizmat I don't see any rakudo changes that could explain this 08:11
Mouq lizmat: On the bright side, tonight I optimized &hyper (e.g., foo »op« bar), and what I've benched has shown a cut of up to 50% in extreme cases
(for something like ((1, [2, 3]) «+» (4,5,[6,7],[8,9])) for ^1000)
lizmat Mouq++ 08:12
smls masak, are you still thinking about Perl 6 macros? 08:13
moritz he typically is :-) 08:14
lizmat FROGGS_: if I go back to e.g. b497d416b349b, it still has the same startup time
Mouq .o( When is masak not thinking about Perl 6 macros is the real question… :)
masak smls: oh yes.
smls How feasible would it be to turn the Test module's ok() subroutine into a macro, that introspects the expressions it got and prints a useful report if it evaluated to False?
masak smls: just been having a (predictable) bloggin slump lately :) 08:15
smls ok(42 == 43, "foo"); #-> Failed test "foo"␤ expected: '43'␤ got: '42'
masak smls: it's been discussed before. it should be attempted, I think.
smls: but *not* with Test.pm itself.
smls ...making the is() function redundant
masak right.
I'm already 100% sure that when I'm done with macros, that particular feature will be well withing the capabilities of macros. 08:16
in fact, I'll go ahead and add it to my growing list of use cases.
smls++
FROGGS_ lizmat: I have no idea by skimming the commits :/
smls ok :)
masak .oO( ok() :) )
FROGGS_ lizmat: is it possible that you've got a running process somewhere that eats performance? 08:17
masak oh, it's already on that list. pmurias++
smls I really don't like the is() function, because the fact that it does `eq` comparison is not really obvious (nor ideal) imo
with ok() macro, the type of comparison would be crystal clear
masak the `eq` semantics is kind of an accident of history. 08:18
moritz just like the `eq` semantics of `eq`
smls Perl 5 history
lizmat FROGGS_: that would be possible, but there isn't
psch .oO( sub is-according-to($have, $want, $msg, &cmp) {...} )
masak smls: what's also been discussed is equipping comparators with an adverb, like :test or sump'n.
lizmat 90%+ idle
masak smls: I never liked that idea -- in modern parlance, it hangs something off the wrong hook, IMO. 08:19
smls: what we could also consider, though, is making a slang that simply assumes all comparisons are assertions. so, ordinary Perl 6 grammar, slightly different semantics.
smls: then you could do `TEST { foo($in) == $out; bar($in2) eq $out2; }` 08:20
lizmat smls moritz : there is cmp_ok, no?
giving you the option of specifying the comparator
masak smls: hm, maybe for the sake of sanity only trigger on statement-level comparisons...
masak wonders if he can somehow convince FROGGS++ to make such a slang in 5 minutes :) 08:21
we need more FROGGS and more slangs.
FROGGS_ hehe
smls masak: I don't think requiring the 3 characters "ok " in front of such statements is an undue burden 08:22
in relation to the extra clarity it offers
moritz lizmat: yes, but cmp_ok $thing, &[==], $other, 'reason' is still a bit of a mouth full 08:22
FROGGS_ gets some &[#] 08:23
lizmat cmp_ok $thing, '==', $other # also works
cmp_ok |<<$thing == $other> # another way 08:24
*>>
moritz lizmat: though with &[==] it's better much better than with &infix:<==>
dalek ast: 25f2964 | usev6++ | S04-declarations/my.t:
Add test for RT #120397
08:27
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=120397
masak smls: you have a point. 08:30
FROGGS_ hmmm, doing a slang that introduces a statement_prefix:sym<ok> is tempting... 08:32
masak :>
masak when I find the tuits for it, maybe this Friday, I want to build a custom Test.pm in module space with excellent diag messages. 08:33
masak especially for is_deeply 08:33
there's so much more we can do there.
FROGGS_ <sym> <statement> <infixish> <statement> [',' <EXPR>]? or some such
masak "Three more elements than expected at position 5: [...}"
"Property '.foo' at path .[5].bar.<blog> expected but missing." 08:34
(or maybe express those things with a more `diff`-like notation)
FROGGS_ looking at other languages might be inspiring here 08:35
smls masak: also look at Test::Differences (Perl 5)
masak smls: ooh, good idea.
lizmat suspecting c3e1024aae026882 now for the increase in startup time 08:36
lizmat breakfast& 08:37
sergot morning #perl6 08:41
psch o/ sergot 08:44
masak sergocie! \o/ 08:44
FROGGS_ morning sergot
Mouq m: Array[Int](1,2,3) 09:03
camelia rakudo-moar ee72bd: OUTPUT«Cannot find method 'Array[Int]'␤ in block <unit> at /tmp/NZUDhN6j0w:1␤␤»
Mouq m: my Int @a = 1,2,3; my $type = @a.WHAT; $type(1,2,3)
camelia rakudo-moar ee72bd: OUTPUT«Cannot find method 'Array[Int]'␤ in block <unit> at /tmp/SQoHjWJDCR:1␤␤»
Mouq I really really want this to work :P 09:04
smls m: say Array[Int].new(1,2,3)
camelia rakudo-moar ee72bd: OUTPUT«1 2 3␤»
masak m: Array(1, 2, 3) 09:05
camelia ( no output )
masak m: say Array(1, 2, 3)
camelia rakudo-moar ee72bd: OUTPUT«1 2 3␤»
masak huh.
well, if Array(1, 2, 3) works, then I'd expect Array[Int](1, 2, 3) to work also.
smls it's the whole coercer vs composer thing
masak Mouq: submit rakudobug? 09:06
Mouq Relevance: Doing work on &hyper, and the return type is the same as one of the input types. So Bag(1,2,3,2) »-» 1 is supposed to be Bag(2) 09:07
smls jnthn: ^^ another thing to consider re potential redisign of how coercers work
masak Mouq: wait, what happened to the 3? :/
hm, a hyper minus. 09:08
m: say [1, 2, 3, 2] »-» 1
camelia rakudo-moar ee72bd: OUTPUT«0 1 2 1␤»
masak m: say Bag.new([1, 2, 3, 2] »-» 1)
camelia rakudo-moar ee72bd: OUTPUT«bag(0, 1(2), 2)␤»
masak m: say Bag.new([1, 2, 3, 2]) »-» 1
camelia rakudo-moar ee72bd: OUTPUT«1 2 3 2 => 0␤»
masak m: say Bag.new(1, 2, 3, 2) »-» 1
camelia rakudo-moar ee72bd: OUTPUT«1 => 0, 2 => 1, 3 => 0␤»
Mouq m: say Bag(Bag.new(1, 2, 3, 2) »-» 1) 09:09
camelia rakudo-moar ee72bd: OUTPUT«bag(2)␤»
Mouq m: say Bag.new(Bag.new(1, 2, 3, 2) »-» 1)
camelia rakudo-moar ee72bd: OUTPUT«bag(1 => 0, 2 => 1, 3 => 0)␤»
masak Mouq: I don't doubt it's correct, but what's happening there? why `bag(2)` in the end?
Mouq masak: Because all the other elements went to 0 09:10
masak oh!
Mouq lol :)
masak right, you're decrementing the *frequencies* of the numbers, not the numbers themselves!
got it.
FROGGS_ ahh
smls made the same thinko as masak
FROGGS_ now I understand Bags too :o)
Mouq That was a confusing example :P 09:11
masak I'm looking forward to having an intuition about all this.
Mouq S03 uses "Bag(3,8,[2,(9,3)],8) >>->> 1" but that's even more broken :P 09:11
masak m: say Bag(Bag.new(|<A B A A A C D B>) »-» 1) 09:13
camelia rakudo-moar ee72bd: OUTPUT«bag(A(3), B)␤»
masak right.
vendethiel o/, #perl6
masak if it's letters, it's easier to see.
vendethiel! \o/
psch o/ vendethiel
masak vendethiel: how's the PHP and Java going?
smls The behavior does make sense as an extension of $baghash<A>++ etc
vendethiel masak: project's done, that's why I'm at home so late..:). Will present later today
masak smls: right. Perl 6's data structures tend to favor the values rather than the keys. and in a Bag, the frequencies are the values. 09:15
smls yeah, although hash'y things in list context usually become a list of pairs 09:16
m: say { A => 1, B => 2 } »-» 1 09:17
camelia rakudo-moar ee72bd: OUTPUT«A => 0, B => 1␤»
smls well, at least the hyperop behavior is consistent between bags and hashes... :) 09:18
masak m: my $pair = A => 1; $pair--; say $pair 09:19
camelia rakudo-moar ee72bd: OUTPUT«No such method 'pred' for invocant of type 'Pair'␤ in sub postfix:<--> at src/gen/m-CORE.setting:2271␤ in block <unit> at /tmp/_v9WwPyvyC:1␤␤»
masak m: my $pair = A => 1; $pair = $pair - 1; say $pair
camelia rakudo-moar ee72bd: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \v: *%_)␤ in sub infix:<-> at src/gen/m-CORE.setting:5256␤ in block <unit> at /tmp/2TEv0ubnPm:1␤␤»
masak fair enough. 09:19
vendethiel "Safe Typescript achieves soundness by enforcing stricter static checks and embedding residual runtime checks in compiled JavaScript code" noo :( 09:22
masak what 09:23
url?
tadzik OBJECTION :)
vendethiel research.microsoft.com/apps/video/d...?id=226836
tadzik huh, news to me 09:24
brrt wat
vendethiel developers.google.com/v8/experiments google announcing a "strong mode" that's "like soundscript"
what's going on these days
brrt rotation of the earth around it's axis and the sun 09:25
rotation of the sun around the galactic core
among other things :-)
vendethiel but that's like before :)
masak vendethiel: people are realizing that they can take JavaScript and make custom extensions. this is a good thing. it's like Perl 5 and CPAN.
brrt right
masak not all extensions will be useful in the long run, or even beneficial. 09:26
but there will be learnings, and some good things will trickle into JS core.
vendethiel masak: well, sure, but google has sanescript, soundscript, gwt, dart, "the new typescript that should've been atscript", etc etc etc etc
brrt but every one of them will be splashed and dipped in Hype Hype Hype
masak vendethiel: are you feeling the churn? so am I.
brrt masak: but was 'let' and whatever-the-new-lambda-syntax-is really part of that? 09:27
vendethiel masak: no idea what "churn" is supposed to mean here
masak vendethiel: that's the force of tens of thousands of eyes now turning to this little cute DHTML language as the savior of tomorrow.
brrt lol
masak vendethiel: it means constant change and newness.
vendethiel no, they've been doing that snce at least 2011 or 2012
masak vendethiel: it's not even a matter of whether the churn is good or bad at this point. it's crazy, and if you're a contientious/curious web developer wanting to stay on top, it will consume you. 09:28
vendethiel masak: I've been consumed already, thank you very much :P 09:29
brrt but.. what could be the benefit of staying on top?
vendethiel new toys to play with! New experiments to be done
masak being able to deliver code on time to customers that does what they need
vendethiel "• Function types are contravariant (soundness!)" I feel scared somehow
masak don't be so contravariant 09:30
masak .oO( value types, jump to the left! function types, jump to the right! ) 09:30
brrt but with the current churn rate the benefit very questionable (delivering code on time)
as in
vendethiel
.oO( argument types, jump on the contra. Return types, just on the co ! )
09:31
masak .oO( heeeeere comes the functor! )
brrt there are limits to the improvement space
masak .oO( now the same steps, but *dual*! )
brrt: psssh, that's crazy talk. 09:32
brrt i'm entitled to talking crazy (entitled generation after all)
vendethiel
.oO( "today, we invented cocojavascript.js" )
09:32
masak brrt: research shows that the ordinary JavaScript web developer is working at something like 0.00001% of their full potential.
brrt: so, you're *technically* right, but... :P
brrt or something that totally-not-entitled-but-driving-a-cabriolet-writers are calling people my age
:-D
vendethiel masak: research shows that the co-ordinary masak developer is punning at something like 120% of their full potential...:P 09:33
masak haha
brrt that's only possible by using the higher heating value of masak's potential :-P
masak vendethiel: did you know that according to CT, coconuts are just ordinary nuts?
vendethiel masak: I've seen that tweet, yes :)
masak dang :) 09:34
vendethiel: jnthn and I always crack up when we're in some airports, and they have a bus company with a big label COBUS.
vendethiel: obviously the cobus is what takes you back from the plane to the airport.
vendethiel
.oO( but is it better than COBOL )
masak ah, the old BOL language 09:35
vendethiel
.oO( If you had many buses, they'd be CO-BI )
brrt i thought coconuts were really the core of a cocos fruit
vendethiel latin jokes mean I should get going instead of grinning around 09:36
masak get thee to the co-bi, vendethiel! 09:38
grondilu m: say so ~0
camelia rakudo-moar ee72bd: OUTPUT«False␤»
grondilu was expecting True here :/ 09:38
masak grondilu: that would be more consistent. 09:39
brrt m: say (~0).WHAT
camelia rakudo-moar ee72bd: OUTPUT«(Str)␤»
masak grondilu: but Perl 6 has that one inconsistency for "0" -- it's False
m: say ?"0"
camelia rakudo-moar ee72bd: OUTPUT«False␤»
masak m: say ?"00"
camelia rakudo-moar ee72bd: OUTPUT«True␤»
masak m: say ?"0.0"
camelia rakudo-moar ee72bd: OUTPUT«True␤»
masak m: say ?"0e1"
camelia rakudo-moar ee72bd: OUTPUT«True␤»
brrt m: say so (~0)
camelia rakudo-moar ee72bd: OUTPUT«False␤»
masak m: say ?"0+0i"
camelia rakudo-moar ee72bd: OUTPUT«True␤»
brrt ....
do 'we' really want this behaviour? 09:40
i suppose we do, since it's probably been specced
masak I personally don't. but I also don't have a hyena in that race, so... meh.
brrt fair enough :-)
masak is conserving his hyenas for more important races :)
grondilu FYI, I bumped into that while looking at rosettacode.org/wiki/Temperature_co...ion#Perl_6
seemed to me that 'while '' ne my $ans = prompt "..." {...}' was a bit dull 09:41
moritz brrt: fwiw it seems to work fine in p5
brrt m: say ~''
camelia rakudo-moar ee72bd: OUTPUT«␤»
brrt m: say ?''
camelia rakudo-moar ee72bd: OUTPUT«False␤»
grondilu yeah but the problem is that it would stop if I enter '0' 09:42
masak if you want my stated theoretical stance (and you probably don't), then Str and Bool and the real types are all monoids. they have *one* unit ("", False, 0) and anything else should be truthy.
grondilu: please submit a rakuodobug. you have my support.
grondilu ok I'll do it. 09:43
moritz no, please open an perl6/specs issue
masak even better.
moritz rakudo follows the specs *and* the test suite here
masak what moritz++ said.
those are the same thing nowadays, silly :P
moritz you'd have to crawl very far out of the window to construct it as a rakudobug
masak yeah, *mumble* *mumble* meant perl6/specs issue 09:44
no wonder this felt deja-vu-ish: irclog.perlgeek.de/perl6/2014-12-16#i_9813500
seems this is a recurring discussion. all the more reason to leave a perl6/specs issue record of it.
grondilu opens an issue in perl6/specs 09:45
brrt what's a monoidal type
for somebody who doesn't understand category theory notation and confuses it with linear algebra notation 09:46
masak brrt: something with an identity operation, closure under composition, and the associative law. 09:47
brrt ah. ok 09:47
:-)
masak monoids are everywhere. they're like groups, but they're not fussy about inverse operations.
grondilu github.com/perl6/specs/issues/87 09:48
masak the associative law essentially guarantees a Perl-like flattening. so operations (A (B C) ((D E) F)) can just be written as (A B C D E F). 09:49
brrt i see
ok, so i can see how a string or a number would be of like that, yes
moritz masak: though the types you listed are only monoidic under certain operations, right?
masak moritz: sure -- that's part of the deal. you say "(M, ∗) is a monoid", and you've chosen the set M and the operation ∗ 09:51
masak actually, monoids belong more to abstract algebra than to CT from what I udnerstand. but CT uses them heavily, too. 09:52
moritz masak: and you've chosen (Str, ~), (Numeric, +) and (Bool, or) ?
masak correct.
moritz why 'or' for Bool? 09:53
masak the unit of the respective monoid ("", 0, False) is unchanged under the operation (~, +, ||)
I think that answers it.
but Bool is kinda symmetric. you could do a monoid with (Bool, &&) and True as the unit, too :) 09:54
moritz right
masak it's just that we don't usually think of it that way.
unless you're doing an .isEmpty query or something
moritz which makes it non-obvious that the identity element should be the False element
masak not really.
it's by heavy convention.
moritz it's not for (Numeric, *) either 09:55
masak not sure I get your point. that's yet another monoid.
*my* original point is that per monoid, there's *one* unit. 09:56
so "0" is an aberration.
moritz my point is that Str isn't a monoid 09:56
masak respectfully, sir. it is.
moritz (Str, $some_operation) is
masak *sigh* :)
well, yeah.
(Str, ~)
moritz it makes a difference
masak with "" as the unit.
moritz because only with a certain operation you can identify an identity element 09:57
and if several operations have different identity elements
masak you seem to think you have made a vital point to un-anchor my argument. I don't see that you have. :/
moritz it's not clear anymore which one should be False one
masak look, when you transform from the (Str, ~) monoid to the (Book, ||) monoid, *one* element of Str is allowed to map to False. 09:58
in Perl 6 currently, two do.
that's wrong.
moritz I agree, from that perspective
but
masak since "" ne "0", and the latter is not the unit
moritz we also have (Cool, ~) and (Cool, +)
and (Cool, +) has different neutral elements depending on the implementation type 09:59
masak finds that he is arguing quite vehemently for a race in which he has no hyena :)
moritz it's 0 for Int and 0e0 for Num and '0' for Str
:-) 10:00
but by that argument, ?'0e0' would need to be False. I see. 10:01
masak the natural end point of your argument is that Str.Bool should have Str.Numeric.Bool semantics, I guess. in the cases where things look like numbers, I mean.
moritz ... when argued from the Cool perspective 10:02
masak and I do see your argument. arguing from the Cool perspective is saying "Perl 6 has enough Perl 5 in it to fudge the Str/Numeric difference"
moritz which is basically the same as saying that ~ isn't the only natural operation on Str
masak not saying anything is a natural operation. 10:03
just saying (Str, ~) is a monoid and "" its unit
in some sense, it's *the* monoid for Str.
moritz but then you make the leap that ?'0' shouldn't be false, because it's not the neutral element of the ~ operation
masak right.
moritz so you do privilege ~ to make that conclusion 10:04
masak yep.
because ~ is the operation that makes it a monoid, and monoids are nice
Mouq m: say ?"False" 10:05
camelia rakudo-moar ee72bd: OUTPUT«True␤»
masak ah -- mapping back from (Bool, ||) to (Str, ~) makes it clearer, I think. `False` should map back to Str's unit. but is that `""`, or `"0"`? 10:06
Mouq: right, that also highlights the inconsistency. it's *only* "0" that is privileged.
moritz: AngularJS considers a bunch of different strings to be falsy, among others "n" and "no". it creates all manner of hilarious bugs in user interfaces. 10:07
moritz: they do this because they are basically limited to messing with strings instead of real objects in a number of circumstances.
moritz masak: because they go through the DOM, and the DOM only does strings? 10:08
masak moritz: I think that experience made me a bit more sensitive to introducing special cases. and wanting to find the nice rule behind it all. what I found was monoids.
moritz: not really sure of why they do it with strings, to be honest. 10:09
moritz: maybe for the same reasons &is in Test.pm ended up doing it -- because it was kind of a "universal exchange format", and "simple". 10:10
smls grondilu: «while prompt("Temperature: ") -> $t { ... }» would be an even more convincing example case in favor of the change, because that convenience syntax *cannot* be used if a custom test has to be performed on the value 10:13
masak I think I find grondilu++'s use case more convincing than my own monoids reasoning.
it's like, we distinguish between falsy values and undefined (and consider that a strength)... 10:14
...but we spuriously consider "0" to be falsy.
dalek kudo/nom: 0bc3a04 | Mouq++ | src/core/ (2 files):
Fix some issues with &hyper and optimize it

Fixes issues with hyper on empty lists and fixes some issues with hyper not returning the right type. Prevented flattening behavior. 1d05014 | Mouq++ | src/core/ (2 files):
  .eager shouldn't flatten
This fixes an issue with ((1, (2, 3)) »+« (4, (5, 6)))
10:16
Mouq Sorry dalek :( 10:17
dalek ast: b80e436 | usev6++ | S03-operators/assign.t:
Add fuged test for RT #116178
10:39
Mouq Should we throw on hypering a known infinite list?
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=116178
masak Mouq: seems reasonable to me.
Mouq Ah. 1 «+« (1 xx *) # not ok… (1,2,3) «+« (4,5,6 ... *) # not ok… (1,2,3) «+» (4,5,6 ... *) # totally fine 10:59
m: say (1,2,3) «+» (4,5,6 ... *)
camelia rakudo-moar 1d0501: OUTPUT«(timeout)use of uninitialized value of type Nil in numeric context in block <unit> at /tmp/wX8NDwp4w1:1␤␤use of uninitialized value of type Nil in numeric context in block <unit> at /tmp/wX8NDwp4w1:1␤␤use of uninitialized value of type Nil in num…»
Mouq Er. Hrm.
m: say (1,2,3) »+» (4,5,6 ... *) 11:00
camelia rakudo-moar 1d0501: OUTPUT«5 7 9␤»
Mouq That's what I meant :P
masak was gonna say.
torbjorn hm why cant you add two indefinite lists, ie (1,2,3 ... *) etc. in that example? 11:07
masak torbjorn: because the » symbols mean "hyper", i.e. "do it all (conceptually) in parallel", which runs into trouble with the list being infinite. 11:14
smls m: say (1,2,3 ... *) Z+ (1,2,3 ... *)
camelia rakudo-moar 1d0501: OUTPUT«2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 102 104 106 108 110 112 114 116 118 120 122 124 126 128 130 132 134 136 138 140 142 144 146 148 150 152 154 1…»
smls torbjorn: you can dop it with the Z metaop, which is lazy (unlike hypers) 11:15
masak right. it's two different "modes" of promoting a scalar operation to a listy one. 11:19
masak loves all the thought that has gone into Perl 6 in this
smls is honestly not quite convince that the theoretical "parallelism" of the hyper ops is going to pan out in terms of practical benefit 11:20
timotimo o/
dalek kudo/nom: 76ee8b6 | Mouq++ | src/core/ (2 files):
Throw if two infinite lists are attempted to be hyperop'd
11:22
timotimo does the hyper optimization only happen when you have flattenable things?
Mouq timotimo: Do you mean the thing I mentioned or something else? 11:27
timotimo your thing
Mouq timotimo: Because the thing I mentioned was just algorithmic :P
Ulti masak I don't see why something being calculated in parallel necessarily means you couldn't expect it to remain lazy and just return something like a feed
timotimo huh?
Mouq timotimo: Although it also utilizes the for + range opt :)
timotimo i mean what you implemented
Mouq timotimo: &hyper descends into sub-lists/hashes, and calls &hyper on that. &hyper also is supposed to return a list/hash of the same type as it was passed. So I made it do these things better. As a nice side-effect, it got faster :) 11:31
timotimo that's neat 11:34
gunod concerning variable interpolation in regexes: why does this work 11:36
m: class A{has $!b="b"; method match {my $b=$!b; my regex r { a $b c }; say "abc" ~~ &r}}; A.new.match
camelia rakudo-moar 1d0501: OUTPUT«「abc」␤»
gunod and this doesn't
m: class A{has $!b="b"; method match {my regex r { a $!b c }; say "abc" ~~ &r}}; A.new.match
camelia rakudo-moar 1d0501: OUTPUT«Nil␤»
timotimo perhaps it's just not parsed right? 11:39
torbjorn masak: smls: thanks! 11:41
psch m: class A { has $.b; sub foo { say $!b } }; # that's what i would expect from the regex as well 11:43
camelia rakudo-moar 76ee8b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Lv7SA25YW0␤Variable $!b used where no 'self' is available␤at /tmp/Lv7SA25YW0:1␤------> 3class A { has $.b; sub foo { say $!b7⏏5 } }; # that's what i would expect from ␤»
Mouq guesses a bug in Cursor.INTERPOLATE 11:44
timotimo oh, hm 11:44
Mouq Oh wait, because \self is already set :P 11:46
regexes are methods
mystery solved :P
psch m: my &f = regex { { self.WHAT.say } }; "a" ~~ &f 11:47
camelia rakudo-moar 76ee8b: OUTPUT«(Cursor)␤»
psch duh.. :)
Mouq m: class A{has $!b="b"; method match {my regex r { a $!shouldn'tthisrandomnamefailthough c }; say "abc" ~~ &r}}; A.new.match
camelia rakudo-moar 76ee8b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/dGMgQUgWOp␤Attribute $!shouldn'tthisrandomnamefailthough not declared in class A␤at /tmp/dGMgQUgWOp:1␤------> 3domnamefailthough c }; say "abc" ~~ &r}}7⏏5; A.new.match␤ expecting any of:␤ …»
Mouq So…
psch m: say Cursor.can('b') 11:48
camelia rakudo-moar 76ee8b: OUTPUT«␤»
psch huh, so it does look in A
Mouq It's parsing it correctly, and then it creates the wrong AST?
*correctly is an ambiguous term here :P 11:49
I'm not sure what the correct behavior is
moritz the problem is likely that regexes are instances of a grammar or cursor or so 11:50
and so the lookup lands in the wrong instance
masak Ulti: "hyper" means "do everything as soon as possible, even if that means going parallel". "lazy" mean "do as little as possible, even if that means running little disconnected chunks of code in the future"
Ulti: they're mutually exclusive. *or* the burden of proof is on you to show how they're not ;) 11:51
smls moritz, Mouq: Regexes are methods operating on a Cursor instance, but they have their own syntax, so $!foo in a regex could very well be defined to DWIM rather than strictly do the same thing as $!foo in a normal method. 11:53
psch from the looks of it it already half-way DWIMs 11:54
moritz smls: sure
psch cf. Mouq's latest error message from camelia
moritz smls: not saying it can't be made to work, just trying to explain why it doesn't work right now
psch (or "camelias latest error message towards Mouq")
smls right 11:55
m: class A { has $!attr = "foo" }; my $method = method { say $!attr }; A.$method; 11:57
camelia rakudo-moar 76ee8b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/gTu_lJEKf_␤Cannot understand $!attr in this context␤at /tmp/gTu_lJEKf_:1␤------> 3foo" }; my $method = method { say $!attr7⏏5 }; A.$method;␤»
smls ^^ looks like private attributes are resolved at compile time anyway 11:58
and need to be used in the class'es "scope"
psch m: class A { has $.a = "b" }; A.^add_method("c", method () { say $.a }); A.new.c 11:58
camelia rakudo-moar 76ee8b: OUTPUT«b␤»
psch thought ^add_method was runtime 11:59
ah
that's $!a vs $.a
smls psch: your example uses an auto-generated accessor method, not a private attribute
psch smls++ 12:00
smls in any case, this means that $!foo in regexes couldn't meaningfully refer to Cursor attributes anyway, right? 12:01
gunod so I tried to work around it. this doesn't work either:
m: class A{has $!b="b"; method match {my regex r($b) { a <$b> c }; say "abc".match(/<r($!b)>/) }}; A.new.match
camelia rakudo-moar 76ee8b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/s85ACNRDHW␤Variable '$b' is not declared. Did you mean '$!b'?␤at /tmp/s85ACNRDHW:1␤------> 3ethod match {my regex r($b) { a <$b> c }7⏏5; say "abc".match(/<r($!b)>/) }}; A.new.␤ expecting any of…»
smls Because while they're methods, they're defined outside the scope of the Cursor class.
FROGGS_ gunod: within that regex /<r($!b)>/ you are in another class... and this class does not have a $!b 12:18
m: class A{has $.b="b"; method match {my $o = self; my regex r { a "$o.b()" c }; say "abc" ~~ &r}}; A.new.match 12:20
camelia rakudo-moar 76ee8b: OUTPUT«「abc」␤»
FROGGS_ though, the attribute has to be private for that way
smls my regex r($b) { a $b c }; say "abc" ~~ &r.assuming("b"); # curious 12:24
smls m: my regex r($b) { a $b c }; say "abc" ~~ &r.assuming("b"); # curious 12:24
camelia rakudo-moar 76ee8b: OUTPUT«No such method '!cursor_start' for invocant of type 'Str'␤ in regex r at /tmp/1lDZ8ihMdQ:1␤ in sub CURRIED at src/gen/m-CORE.setting:4255␤ in method ACCEPTS at src/gen/m-CORE.setting:3847␤ in block <unit> at /tmp/1lDZ8ihMdQ:1␤␤»
smls ah well 12:25
moritz I'm probably quite slow for not having it realized before, but "Separate the API from the meta-API" seems to be a good design principle 12:29
that's what Perl 6 does with its .HOW and .^ calls, and also what sqlalchemy does with inspect(dataobject)
masak moritz: it's just Separation of Concerns. the object is concerned with one thing, the class metaobject with another. 12:30
(so, yes) :)
moritz I guess I haven't yet designed enough large enough systems to stumble upon it in my own work
masak: thanks, now I feel even more stupid :-) 12:33
masak sorry :/
moritz: but you did make me aware that on top of the SoC, we have .HOW and .^ as easy-access conduits from one concern to the other. that's significant, too.
moritz research.microsoft.com/apps/video/d...?id=226836 12:42
masak moritz: vendethiel posted it in the backlog. did you find it independently? 13:02
moritz masak: yes 13:03
I don't do much backlog these days :(
masak me either, strangely :(
well, I encourage you to read vendethiel++'s reaction and the subsequent punfest: irclog.perlgeek.de/perl6/2015-03-11#i_10257405 13:04
FROGGS_ consistent :o( 13:06
err, :(
masak unexpected :o)
FROGGS_ hmmm, if I had a number like 283, and I'd had certain values like 23,33,44,62 that this number can consist of... how do I get the combination of the values that is equal to that number? 13:15
like 283 == 33×5+52+66
ohh, my values are more like 23,33,44,54,66
is there an easy way to get there?
masak sounds like one of the p6cc tasks
FROGGS_: is there an ordering requirement? do you have to use all of the values? 13:16
FROGGS_: which operations do you allow?
FROGGS_ no ordering 13:17
and not all values have to be used
and like the Bag earlier, the values can be N times in there 13:18
so it is about the sum of a multiple of the values 13:19
masak today's mini-challenge: twitter.com/mjdominus/status/574937856298369024 13:21
(I have a working and decently fast 16-line Perl 6 solution)
masak FROGGS_: another question: can one assume that there is a solution if the search space is searched deeply enough? 13:22
FROGGS_ masak: there is always a solution, yes 13:23
masak right. which means that the question is constrained :) 13:23
you didn't say which ops. only + and × ? 13:24
FROGGS_ correct, only those
I dunno where to start...
probably because I am bad at math :o)
[Coke] maaaan, I wish I could write this code in Perl6 right now. 13:34
masak is giving it a quick go
[Coke] (trying to do deprecated things with threads, lots of text-that-looks-like-XML generation...
FROGGS_ text-that-looks-like-XML :P
smls m: for 99999...10000 { my @d = .comb; if $_ % all (+@d[$_..5].join for 1..4) { say $_; exit }; say $_ } 13:39
camelia rakudo-moar 76ee8b: OUTPUT«99999␤99998␤»
smls massak: super naive solution ^^
well, without the final "say $_"
hm, dunno why camelia quit rather than timeout 13:40
on my system, it runs until it finds 95625
m: for 99999...10000 { my @d = .comb; if $_ % all (+@d[$_..5].join for 1..4) { .say; exit } } 13:41
camelia rakudo-moar 76ee8b: OUTPUT«99998␤»
smls hm, does my irc client replace double % with a single one?
FROGGS_ m: say (23,33,44,52,66).permutations.elems 13:43
okay, brute-forcing it might take a while :P
|Tux| rekodubrew cannot fetch panda
==> Successfully installed JSON::Tiny
==> Fetching panda
and then hangs
camelia rakudo-moar 76ee8b: OUTPUT«120␤»
FROGGS_ |Tux|: I guess you have no problems accessing github?
|Tux| it fetches rakodobrew itself and nom fine
FROGGS_ smls: I see a single one, yes 13:44
m: for 99999...10000 { my @d = .comb; if $_ %% all (+@d[$_..5].join for 1..4) { .say; exit } }
tadzik [Tux]: it sometimes takes *a while*
oh, you're git-fetching
then it should not
camelia rakudo-moar 76ee8b: OUTPUT«95625␤» 13:45
FROGGS_ |Tux|: ohh, that "Fetching panda" can also mean that it copies the panda directory to a tempdir
|Tux| tries on another computer too
FROGGS_ |Tux|: do you have anything in there? like circular symlinks or other rubbish? :o)
|Tux| not that I am aware of :) 13:46
smls FROGGS_: \o/ 13:48
I wonder what masak's (longer but probably much smarter) solution is 13:49
PerlJam smls: did you reply to mjd's tweet with your P6 solution?
smls no, i don't use twitter 13:50
|Tux| FROGGS_, also hangs on other system 13:52
other location and other network
full log: gist.github.com/Tux/7a60566c78cbc333da5d 13:54
FROGGS_ I have no idea, also because I did not use rakudobrew yet :S 13:57
colomon m: for 99999...10000 -> $n { if $n %% all (10000, 1000, 100, 10).map($n % *) { $n.say; exit } } 14:03
camelia rakudo-moar 76ee8b: OUTPUT«95625␤»
colomon FROGGS_: that’s about 4x faster than your solution. ;) 14:04
FROGGS_ colomon: not mine :o)
colomon oh, right, smls++
FROGGS_ I just pasted it
|Tux| git pull on panda itself pass'es 14:06
colomon dang, I switched to $n «%« (10000, 1000, 100, 10) instead of (10000, 1000, 100, 10).map($n % *) and it added 200% to the running time. 14:08
smls colomon++, hyperops-- 14:09
;)
gtodd .... scripts for sale: twitter.com/davewiner/status/530106220343214081
colomon m: (99999...10000).grep({$_ %% ($_ % 10000)}).grep({$_ %% ($_ % 1000)}).grep({$_ %% ($_ % 100)}).first({$_ %% ($_ % 10)}).say; 14:11
camelia rakudo-moar 76ee8b: OUTPUT«95625␤»
colomon (fastest yet, but obviously less than perfectly elegant) 14:12
gtodd errm what is that %% ? :-) so infix modulus compares each element of two lists then lets you do stuff with each result in a one liner
yikes
PerlJam colomon: and what's the performance difference? :)
smls gtodd: % mean "is divisible by"
double-% I mean 14:13
colomon smls++ means %%
PerlJam smls: what client are you using that it eats one of the %?
smls PerlJam: Konversation
PerlJam smls: try %25% 14:14
colomon PerlJam: I get 10 seconds for smls’s original, 2.2 for the first one I posted, 7.7 for the hyper version, and .6 for the one with all the greps
smls %25%
FROGGS_ :P
works *g*
PerlJam marks Konversation as "weird IRC client to not use" in his head 14:15
colomon: nice.
smls gtodd: it's basically convenience for ($a % $b != 0) just without requiring you to remember the != 0 correctly
gtodd yup ... modulus is nice but ... just sticking it in front of a list is wow .... if $n %% all (10000, 1000, 100, 10) 14:16
smls gtodd: == 0 I mean, not != 0
gtodd !!
smls just proves that its an easy source of error ;) 14:17
gtodd: all() constructs a Junction
PerlJam smls: I look at %% as more "say what I mean" than convienence :)
er, convenience 14:18
gtodd what about %25% ;-)
smls junctions can be used in expressions where a single value is expected, but automatically cause the whole expression to be evaluated for each "value" of the junction, and return the logical result
gtodd yoleaux: .u ☮ 14:19
oops
moritz .u ☮
yoleaux U+262E PEACE SYMBOL [So] (☮)
gtodd ww
gtodd U+262E now 14:20
msg yoleaux:
arg
smls %% 14:24
gtodd I just spent five minutes trying to get the perl6 REPL to behave like yoleaux
:-\
smls yay, disabling "Variable Expansion" (whatever that's for) in my irc client's settings seems to have fixed it 14:25
FROGGS_ I was hoping that somebody might spend a summer to make the REPL behave :S
PerlJam ah ... Konversation is a windows client? 14:25
gtodd m: "U+262E".char 14:25
camelia rakudo-moar 76ee8b: OUTPUT«No such method 'char' for invocant of type 'Str'␤ in block <unit> at /tmp/tmnbauEIeY:1␤␤»
gtodd :-D
|Tux| one of the folders inside rakudobrew is moar-nom/panda/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.pand
a-work/1426081091_7/.panda-work/1426081091_7/.panda-work/1426081091_7/.panda-work
smls PerlJam: No, KDE/Linux
FROGGS_ |Tux|: so it does not clean up? 14:26
|Tux| smls, I use KDE + hexchat
I am using a clean moar-nom/panda folder
FROGGS_ eww 14:27
|Tux| tadzik?
smls FROGGS_: Yeah, the REPL has a bunch of problems.
tadzik [Tux]: ?
oh
that looks unfortunate
FROGGS_ |Tux| / tadzik: that probably mean that File::Find is lazy again?
means*
|Tux| it also means I cannot continue testing :(
FROGGS_ smls: yes, and it needs someone who only cares about that for a while
tadzik I can't really look at it now, but is it on fresh rakudobrew-build? 14:28
a new build, not an update?
|Tux| yep, fresh git pull
yesterday was still ok
tadzik huh
I don't think there were updates to either
gtodd now I will use perl6 power to tell me what unicode character the hex codepoint U+262E corresponds to m: "U+262E".chars ... errm 14:29
hehe
tadzik I can't really look into it now, but I'll tell rakudobrew to build me one and see if that works
smls For example, binding (rather than assigning) variables is pretty much busted in REPL
|Tux| .u U+262e 14:30
yoleaux U+262E PEACE SYMBOL [So] (☮)
gtodd yeah I know I know ... :-) 14:30
anyway yoleaux is so convenient that I forget about it ... and assume yoleauxness is built in to the REPL ;-) 14:31
PerlJam gtodd: you can always write a yoleaux module for yourself that you can use with the REPL :) 14:35
gtodd camelia: absorb yoleaux into your Borg 14:49
errm I meant assimilate
PerlJam: twould be cool
tadzik [Tux]: yeah, it reproduced here :| 14:51
wtf
I blame rakudo :) 14:52
FROGGS_ tadzik: so there must be a rakudo change about cwd or something?
|Tux| happy its not his fault
tadzik FROGGS_: perhaps
FROGGS_ |Tux| / tadzik: asre symlinks in the path to that panda dir? 14:53
|Tux| no
tadzik no
FROGGS_ good
smls rosettacode.org/wiki/Permutations_w...ons#Perl_6 no longer works with current Rakudo, anyone know how to fix it? 14:55
dalek pan style="color: #395be5">perl6-examples: 2b1bc9b | paultcochrane++ | lib/Pod/Convenience.pm6:
Uncuddling elsif statements
14:57
pan style="color: #395be5">perl6-examples: 868d277 | paultcochrane++ | htmlify.pl:
Extract title contents in its own routine
pan style="color: #395be5">perl6-examples: 85ac1b9 | paultcochrane++ | / (2 files):
Add table headers to example index files
gtodd m: sprintf "U+%x".uc , "☮".ords 15:00
camelia ( no output )
gtodd m: say sprintf "U+%x".uc , "☮".ords 15:01
camelia rakudo-moar 76ee8b: OUTPUT«U+262E␤»
colomon smls: how is it failing? 15:01
smls m: my $k = <a b c>; my $n = 2; .say for [X]($k xx $n).tree;
camelia rakudo-moar 76ee8b: OUTPUT«a b c a b c␤»
smls should print all "permutations of $n elements drawn from $k" 15:03
gtodd so maybe it would be easy enough to add yoleauxisms to the REPL with the non-official accepted REPL shortcut mechanism :-) ... perlgeek.de/blog-en/perl-6/2013-repl-trick.html 15:12
gtodd m: sub u(Mu \x) is export { sprintf "U+%x".uc , x.ords } ; say u "☮" ; 15:13
camelia rakudo-moar 76ee8b: OUTPUT«U+262E␤»
gtodd m: sub u(Str \x) is export { sprintf "U+%x".uc , x.ords } ; say u "☮" ;
camelia rakudo-moar 76ee8b: OUTPUT«U+262E␤»
moritz you probably want that to be %04x or %06x 15:14
deepending on how new or old your Unicode is :-)
gtodd oh true heheh .. there must be a better way than writing 100 yoleaux subs :-) .... the perl way of auto sub routine generation from a hash 15:15
of course with the perl6 community no matter how odd the code was everyone would be nice to me :)
haha 15:16
gtodd I guess Scott Walter's book "Perl 6 Now: The Core Ideas Illustrated with Perl 5" (from 2005 ) is outdated ... but it's a nicely organized presentation .. like a long detailed version of perlgeek.de/en/article/5-to-6 15:38
PerlJam um ... except it's more about how to do P6 stuff in P5 15:41
gtodd hehe :) ... I assume doc.perl6.org/language/5to6 is the main place for gathering docs about 5-to-6 and that it will become longer than one page as it it evolves 15:42
moritz doc.perl6.org/language/5to6 is meant to be a migration (of code and knowledge) guide 15:45
in perlgeek.de/en/article/5-to-6 I tried to introduce some new features, but mostly explain why they exists, what advantages they offer 15:46
gtodd ++ that is a great article ... the code translators ( perlito and the scripts by Util ) are useful/helpful too in their own way 15:48
J-L Well, I finished porting a Perl5 script to Perl6. The time to run the Perl5 script is about three seconds, and the time it takes to run the equivalent Perl6 script is about 73 seconds. The difference could be due to my not using the most efficient Perl6 code, but the high-level algorithms are pretty much the same in both versions. 15:51
gtodd hmm actually I guess BlueTiger is more than a set of scripts :-)
J-L: great! you have a benchmark :) 15:52
J-L gtodd: I suppose that's good that I have a benchmark... I'm just concerned there's such a large difference in run time (and that Perl6 is the slower one). 15:57
[Coke] m: say 73/3
camelia rakudo-moar 76ee8b: OUTPUT«24.333333␤»
gtodd J-L: www.perlmonks.org/?node_id=1099617 is another seat of pants "benchmark" that has slowly been improving
J-L I mean, if I'm to blame, then I can learn what I'm doing to make the script run so slow.
FROGGS J-L: sadly it is no surprise to me that the Perl 6 version is that much slower
gtodd J-L: but no quantum leaps
moritz still has hopes that GLR will make things faster 15:58
gtodd J-L: one day there will be a quantum leap in speed for some things
moritz however, the lack of GLR progress sadens me
FROGGS moritz: aye
moritz btw, quantum leaps are *very* small
we have them most days in rakudo :-)
PerlJam I've never thought of the GLR directly making things faster, just that they'll be more understandable or consistent across the language. 15:59
gtodd hahah
PerlJam speed has always seemed a secondary thing with the GLR for me.
gtodd order of magnitude leap :-)
PerlJam (maybe I'm wrong)
moritz I just know that our current list iteration speed isn't sustainable 16:00
and if we find no way to speed it up substantially, I'd be willing to drop laziness as a default
PerlJam huh 16:01
gtodd www.perlmonks.org/?node_id=1099617 with that I get .5 seconds for perl5 and 5 seconds for perl6 :-)
moritz in virtually all profiles from programs not written by #perl6 regulars, list iteration takes at least 40% of the time, usually more like 80% 16:02
gtodd but it used to be 40 seconds for perl6 :)
PerlJam I tend to think of laziness-by-default to be one of the core concepts in P6 (i.e. if we can't keep it, we're doing somethign wrong)
moritz++ (for being pragmatic :) 16:03
gtodd because I don't use the exact code from the perlmonks node :)
but even using the same code the perl6 times have gone down from 60 second to 35 seconds etc etc. 16:05
J-L I discovered that appending one byte at a time to a Buf object is much, much slower than preallocating it and then just setting/populating the individual bytes. What took about 40 seconds with appending on Rakudo Perl on Windows, takes about 3 seconds when setting what was already allocated. 16:09
FROGGS J-L: that sounds it does not allocate slots up to a factor of two, which it probably should do 16:11
moritz mutable Bufs are a fairly recent addition to rakudo 16:13
so I'm not surprised it shows warts
but in general, repeated concatenation is O(n^2)
dalek p: 7e7efde | FROGGS++ | tools/build/MOAR_REVISION:
bump moar revision
16:28
p: 9233615 | FROGGS++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/SerializationReader.java:
fixup outers via priorInvocation

This will fix the long standing issue with our scoped subs which are use-d by another package with gets precompiled. This showed up for URI in rakudo star for example.
FROGGS I am confident enough to push it now btw...
moritz prioriIncantatem!
FROGGS aye :o)
dalek kudo/nom: 10dcf35 | FROGGS++ | tools/build/NQP_REVISION:
bump nqp for jvm bugfix and moar improvements
16:30
J-L which print, respectively: 254.99999999999997 255 255 16:31
moritz J-L: context? 16:33
J-L Sorry, I was comparing three different commands: ruby -e "print 2.55 * 100" vs. perl -e "print 2.55 * 100" vs. perl6 -e "print 2.55 * 100" 16:35
Apparently the ruby command gives something different depending on version and/or platform. Some versions give me 255.
Here's a fun comparison between Ruby, Perl5, and Perl6: 16:37
ruby -e "print( (2.55 * 100).to_i )" # prints 254
perl -e "print int(2.55 * 100)" # prints 254 16:38
perl6 -e "print( (2.55 * 100).Int )" # prints 255
Note that there is no bug in any of these... they're behaving exactly as they should.
PerlJam Rat++ :)
(floating point)-- 16:39
J-L Yeah... It's pretty clever.
FROGGS m: say 2.55.nude
camelia rakudo-moar 76ee8b: OUTPUT«51 20␤»
FROGGS .tell jnthn I've already applied it as github.com/perl6/nqp/commit/9233615bb1 16:41
yoleaux FROGGS: I'll pass your message to jnthn.
J-L Whoa! I didn't know about "nude". How 'bout: 3.14159.nude.say 16:45
Interesting!
FROGGS m: say Rat.^methods 16:45
camelia rakudo-moar 10dcf3: OUTPUT«Rat FatRat new nude Num floor ceiling Int Bridge base base-repeating succ pred norm narrow abs sign conj sqrt rand sin asin cos acos tan atan atan2 sec asec cosec acosec cotan acotan sinh asinh cosh acosh tanh atanh sech asech cosech acosech cotanh acotanh…»
moritz m: 3.14159.nude.say
camelia rakudo-moar 10dcf3: OUTPUT«314159 100000␤»
PerlJam m:pi.nude.say
moritz m: pi.Rat.nude.say 16:46
camelia rakudo-moar 10dcf3: OUTPUT«355 113␤»
J-L Yeah! Basically, 3.14159 == 314159/100000
moritz m: pi.Rat(1e-9).nude.say
camelia rakudo-moar 10dcf3: OUTPUT«103993 33102␤»
moritz m: pi.Rat(1e-12).nude.say
camelia rakudo-moar 10dcf3: OUTPUT«4272943 1360120␤»
TimToady .Rat is not very precise
coming from floating point
J-L Didn't know about pi.Rat.nude. Very nice! 16:47
PerlJam Did mine not elicit a complaint because there must be a space after the "m:" ?
m: pi.nude.say
camelia rakudo-moar 10dcf3: OUTPUT«No such method 'nude' for invocant of type 'Num'␤ in block <unit> at /tmp/OnwUmFLBip:1␤␤»
PerlJam yep
J-L Wait... is "m:" actually running commands? (Let me try...)
m: 4+5
TimToady pi is supposed to be a rat literal that knows how to turn into either Rat or FatRat, but we're not there yet
camelia ( no output )
J-L m: (4+5).say 16:48
camelia rakudo-moar 10dcf3: OUTPUT«9␤»
FROGGS J-L: it does, but you have to say/print something
J-L m:pi.say
FROGGS with space after colon
J-L m: pi.say 16:49
camelia rakudo-moar 10dcf3: OUTPUT«3.14159265358979␤»
TimToady maybe we should have a pi() function that you tell how many digits you want 16:50
PerlJam Is that the full precision of pi, or just the precision that's displayed?
m: pi.fmt("%.32f").say
camelia rakudo-moar 10dcf3: OUTPUT«3.14159265358979000000000000000000␤»
TimToady m: say atan2(1,1)*4
camelia rakudo-moar 10dcf3: OUTPUT«3.14159265358979␤»
TimToady seems pretty close to what fits in a floater 16:51
masak FROGGS: here's a solution: gist.github.com/masak/ed6e22bd3e6c0a4bb679
FROGGS: it doesn't stop after the first one, but gives you all the expressions that yield that result
PerlJam huh ... From Num.pm: my constant pi = 3.14159_26535_89793_238e0;
TimToady m: say 3.14159_26535_89793_238.WHAT 16:52
camelia rakudo-moar 10dcf3: OUTPUT«(Rat)␤»
masak FROGGS: there's a fair bit of duplication that could be handled by knowing more about precedence and only considering "canonical" expressions. but I took the easy way out -- and this works, just with some duplication in the results.
TimToady m: say 3.14159_26535_89793_238
camelia rakudo-moar 10dcf3: OUTPUT«3.141592653589793238␤»
TimToady m: say 3.14159_26535_89793_238.nude
camelia rakudo-moar 10dcf3: OUTPUT«1570796326794896619 500000000000000000␤»
PerlJam If a Num can't give me those extra digits of precision, why are they specified? 16:53
TimToady that was probably the limit of the Rat, and someone added e0 16:54
m: say 500000000000000000.msb
camelia rakudo-moar 10dcf3: OUTPUT«58␤»
TimToady looks like we could get 6 more bits worth 16:55
but really, as soon as you multiply it by anything, it'll probably convert to Num anyway
and it's not like that is exact either 16:56
you could, of course, define as big a FatRat as you like
my \pi = fatpi(40) or whatever
J-L m:"test".say 16:57
m: "test 2".say
camelia rakudo-moar 10dcf3: OUTPUT«test 2␤»
J-L m: "test 3" "with error" say() 16:58
camelia rakudo-moar 10dcf3: OUTPUT«5===SORRY!5=== Error while compiling /tmp/kV990rP2e3␤Two terms in a row␤at /tmp/kV990rP2e3:1␤------> 3"test 3"7⏏5 "with error" say()␤ expecting any of:␤ infix stopper␤ infix or meta-infix␤ statement end␤ …»
[Coke] You can also do that in private, btw. :)
.... <<< /msg camelia m: say "turn down "~4.WHAT >>> 16:59
rararara2 I think that in perl6 you cannot do anymore neat tricks like this one: my $gzipit = ($matrixfn =~ /\.gz$/) ? "| gzip -c" : ""; open(OUTPUT, "$gzipit > $matrixfn");
it's a pity isn't it? 17:00
PerlJam rararara2: oddly, I'm looking at some P5 code that does just that :) 17:00
TimToady you just have to use EVAL now
jnthn .botsmaack 17:09
yoleaux 10 Mar 2015 23:15Z <FROGGS> jnthn: the outer of all evil: gist.github.com/FROGGS/5646d051dca96e3f879f (that fixes the jvm+uri issue)
16:41Z <FROGGS> jnthn: I've already applied it as github.com/perl6/nqp/commit/9233615bb1
jnthn ...well, that was easy :) 17:10
hahainternet hola jnthn 17:12
ca va?
perl6_newbee hi al 17:13
l
smls FROGGS: Does this solve your programming problem from earlier today? gist.github.com/smls/83829c30fdc22acaffbb 17:14
jnthn ca va bien, merci :)
jnthn Mais fatigue... 17:15
hahainternet jnthn: not that i want to pressure, i just wanted to ask if you ever got a chance to look at the two nqp/NativeCall questions i had a while ago
jnthn ...is this French or am I totally making it up... :)
hahainternet they were (a) preallocating structs and the like (TCL requires a DString allocating by the caller)
and (b) accessing unions, not as important but on my list
raiph PerlJam: about pi's accuracy in current Rakudo: blogs.perl.org/users/brad_gilbert/2...nt-1432069
hahainternet again no presure with this in any regard, i'm still writing in Golang which is lovely but no Perl 6
jnthn hahainternet: Was actually chatting about unions a bit with arnsholt++ last night. :) 17:16
hahainternet so "possibly soon" is an answer i should take away? 17:17
that's fine with me :)
i just want to ensure it doesn't get missed before 6.0.0 or whatever the hopefully promised goal is this year
gonna try and finish my wrapper in golang to a decent standard this week, then i can port it for fun
[Coke] anything that must be done for 6.0, we probably need an RT and have it tied to the release ticket. 17:18
hahainternet current perl 5 TCL.pm i don't like and being able to use Supplies will make things fun
[Coke]: well i am not in a position to demand it
so i'm just prodding jnthn every now and again in the hope he'll find it useful enough to ensure it works
i don't know nqp at all and haven't the time to invest yet, although hopefully before EOY i will
jnthn Well, thankfully NativeCall is not just me (or even muchly me) hacking on it these days, but anyway, it's on my radar. :)
I agree we need it. 17:19
hahainternet jnthn: if you want to point me at some required reading i'll put some time in
but i have two site backends and one network to fix this week
so it'll take some time
jnthn *nod* 17:20
hahainternet supplies and migrate is all in and working in rakudo/moar though right?
jnthn Yeah, this week has been crazy busy so far and next week also will be. But next few days should be better )
hahainternet i'm pretty sure it was a few months ago reading your talks
jnthn Well, it works as in "I got it to work for my talk", but it's not polished. 17:21
hahainternet rgr
going to try a little irc bot with backend processing going on
so a supply of messages to be handled back and forth
jnthn From April onwards I get a bunch more Perl 6 time, so will be able to tend to a lot of the things I'm wanting to :)
hahainternet seems like it should match up pretty closely with your code golf example
arnsholt hahainternet: Unions aren't implemented yet (and are gnarly for a couple of reasons jnthn pointed out to me last night), but preallocating structs should work already 17:22
masak FROGGS: and now, predictably, I thought of a better way to do it :) 17:23
arnsholt Assuming preallocating structs means something like "struct foo *my_foo = malloc(sizeof(struct foo)); wants_preallocated(my_foo);"
hahainternet arnsholt: yeah it's something pretty similar to that, www.tcl.tk/man/tcl8.6/TclLib/DString.htm
Tcl_DStringInit initializes a dynamic string to zero length. The Tcl_DString structure must have been allocated by the caller. No assumptions are made about the current state of the structure; anything already in it is discarded. If the structure has been used previously, Tcl_DStringFree should be called first to free up any memory allocated for the old string. 17:24
arnsholt Yeah, that should just work, I think
hahainternet i'll have to have another go then, unions don't matter as much to me as i can still throw around pointers 17:25
arnsholt Yeah, as long as it's pointers it should mostly be a question of banging out all the definitions 17:26
hahainternet arnsholt: i'll come back to you in a day or so begging for help :) 17:29
raiph masak (or others): bug reporting help requested: gist.github.com/raiph/8bdd9faceff2ef964a71 17:34
arnsholt hahainternet: Sounds like a plan! =) 17:35
jnthn raiph: /$!a/ should be caught and complained about at compile time, but it ain't yet 17:37
raiph jnthn: the same problem occurs with various scenarios, not just regexes 17:38
jnthn Yeah, anon methods too
Though that one is a little more interesting maybe
If the anon method gets its self arg typed correctly it may be arguably OK 17:39
The regex one simply won't work out, though, so we should complain over that.
raiph i'm particularly curious about whether the last two rt mentions in my gist ought be included as (potentially) the same thing 17:40
afk
jnthn Will have a look a little later...flight now :)
bbi2h
gtodd hmm OUTERS 17:55
timotimo i could out-ers you any day. come at me bro
gtodd heh 17:56
camelia: give me an example of the uise of outers from your copious log of successfully executed snippets
camelia: ? r you "awake" 17:57
I guess those are camelia-2.0 features
masak raiph: re gist.github.com/raiph/8bdd9faceff2ef964a71 18:08
raiph: link on line 2 looks like a genuine issue (and, I think, RT'd already)
raiph: your link on line 5 isn't a bug. 18:09
(more like a misunderstanding of the scoping of !-twigil variables)
masak the link on line 8 seems to suffer from the same misunderstanding... 18:10
hm, or not. 18:11
no, that one should be fine, actually.
masak rt.perl.org/Ticket/Display.html?id=122892 is about !-twigil vars in regexes -- quite separate from all of the above ones. 18:13
rt.perl.org/Public/Bug/Display.html?id=122253 looks very similar, or even a dupe. 18:14
thou in his backlog only seems to be talking abotu BUILD/new issues -- unrelated to !-twigil vars and regexes 18:15
rt.perl.org/Public/Bug/Display.html?id=114672 only pertains to a wrong error message 18:16
rt.perl.org/Public/Bug/Display.html?id=78112 is again about a completely different thing 18:17
raiph: all in all -- thanks for taking the time to compile all those possibly-related things. most of them were not related, though. of your 8 links, only the 4th and 5th are closely related. 18:18
timotimo negative results ought to be published, too 18:19
masak absolutely 18:20
Mouq raiph++ 18:29
dalek c: 197d042 | moritz++ | htmlify.p6:
Include any routines from superclasses/roles

Previously only methods were added. This fails to include those methods that are under a "routine" heading. Also, we shouldn't assume that users of a class are only interested in inherited/supplied methods; subs, traits and operators from a super type are equally interesting to users of a subclass.
18:43
Mouq Hm… found a bug in xx 18:49
m: say (((1,2,(3,4)), 1 ?? (4,5,6,2) !! (2, 3)) xx *).munch(50).perl
camelia rakudo-moar 10dcf3: OUTPUT«(1, 2, 3, 4, 4, 5, 6, 2, 1, 2, 3, 4, 4, 5, 6, 2, 1, 2, 3, 4, 4, 5, 6, 2, 1, 2, 3, 4, 4, 5, 6, 2, 1, 2, 3, 4, 4, 5, 6, 2, 1, 2, 3, 4, 4, 5, 6, 2, 1, 2)␤»
Mouq m: say (((1,2,(3,4)), 1 ?? (4,5,6,2) !! (2, 3)) xx 10).munch(50).perl
camelia rakudo-moar 10dcf3: OUTPUT«(((1, 2, (3, 4)), (4, 5, 6, 2)), ((1, 2, (3, 4)), (4, 5, 6, 2)), ((1, 2, (3, 4)), (4, 5, 6, 2)), ((1, 2, (3, 4)), (4, 5, 6, 2)), ((1, 2, (3, 4)), (4, 5, 6, 2)), ((1, 2, (3, 4)), (4, 5, 6, 2)), ((1, 2, (3, 4)), (4, 5, 6, 2)), ((1, 2, (3, 4)), (4, 5, 6, 2)),…»
nwc10 sigh, the JIRA issue bot at work is rate limited.
dalek is not
this is the wrong way round :-/
(the JIRA bot spent over an hour churning out messages about commits it had seen when I pushed some reprocessed branches) 18:50
(this is not as bad as it sounds, as at work we have a channel named #botland where all the chatty bots live) 18:51
masak nwc10: "For whoever has it, it shall be given to him; and whoever does not have it, from him shall be taken even that which he has."
masak .oO( Fairness already exists -- it's just unevenly distributed ) 18:52
moritz nwc10: dalek is rate limited 18:55
nwc10: it just doesn't align too well with freenode's limiting 18:56
nwc10 ah. right. oh. thanks for the clarification
still, it amuses me every time someone does enough stuff that when they push it they kill dalek
it's a reward for a big contribution. 18:57
timotimo they've killed dalekenny! 19:03
xfix github.com/perl6/specs/issues/87 19:17
eh, I also found '0' being false annoying. 19:18
But it also fits how typeless Perl is.
moritz Perl 6 isn't very typeless 19:19
masak how do I sort two arrays of Ints in "lexical" order? 19:24
(I'm stuck on writing an improved version of FROGGS' teaser problem)
that is, under this comparison, [2] < [2, 2] < [4] 19:25
(just as with characters in a string, elements are compared pairwise until either a difference is found or one of the arrays runs out of elements)
moritz masak: cmp 19:29
masak ooh 19:30
m: say [2] cmp [2, 2]
camelia rakudo-moar 10dcf3: OUTPUT«Less␤»
masak m: say [2, 2] cmp [4]
moritz m: say [2, 2] cmp [4]
camelia rakudo-moar 10dcf3: OUTPUT«Less␤»
masak well, that simplifies things :)
moritz++ 19:31
masak FROGGS: I replaced my first solution at gist.github.com/masak/ed6e22bd3e6c0a4bb679 with a longer but much better one 19:38
this one doesn't report solutions which are trivial duplicates of each other
it keeps running until you stop it. mine has found two solutions in ~5 minutes. 19:39
(I can see that there is a solution with 51 terms, but this algorithm won't get there) 19:40
ooh, it found a third solution :> 19:41
FROGGS: anyway, enjoy. I spent way, way too much time on that. if you have any questions, let me know.
timotimo i can't reproduce the profiler crash any more .. ?! 19:42
Mouq xfix: '0' being false is more in the realms of the "typeless"ness of JS or PHP :P 19:44
xfix '0' is true in JavaScript. 19:45
FROGGS wow 19:46
masak++ and smls++
masak didn't see smls++'s gist.github.com/smls/83829c30fdc22acaffbb until now 19:48
dalek rl6-roast-data: 30b66cd | coke++ | / (9 files):
today (automated commit)
vendethiel would love for conditions to *require* Bools as well :).
masak smls: ooh, that's pretty clever. 19:49
Mouq xfix: Right, I conflating one craziness with another, sorry :)
masak and way faster than my solution. 19:50
[Coke] suggests that we make "true" and "yes" so True. 19:54
. o O (NOTE: NOT REALLY SUGGESTING THAT)
timotimo but also "ja" and "Ja", please 19:55
masak smls: slightly modifying your program, I could find all four solutions: gist.github.com/masak/70b1dbf77c88c43979cb
FROGGS and also aye, and yeah
and blimey
masak [Coke]: I have copied your brain state into a simulation, and I am now forcing your simulated peer to use the language you propose for all eternity. 19:56
looking back, this may have been an overreaction. but consider it an interesting, if inhumane, experiment. 19:57
FROGGS perl6-j -e 'say shell "perl6-j -e \"{;}\""' # Proc::Status.new(exit => 0, pid => Any, signal => 0) 19:59
this might be the reason for many of the passing todos...
FROGGS when a subprocess dies, the exit status is still zeroish 20:00
timotimo that shouldn't be ...
masak today's autopun spotting: twitter.com/mjdominus/status/575729210549006336
FROGGS timotimo: perl6-j -e "{;}" itself dies with an unwindexception
arnsholt masak: Also a very good commentary on techno culture (sadly) 20:01
masak arnsholt: 'fraid you're right. 20:01
arnsholt: gamergate seems to consist of "<woman> there is harassment online -- <men> no, there isn't! -- * men doxx woman" 20:02
:(
arnsholt Pretty much
hahainternet you'll likely catch some shit even for saying that masak
but you're 100% right
[Coke] masak: That language is coldfusion. I'm already in hell, you can't hurt me. 20:03
vendethiel hahahahaha
masak [Coke]: good. I started to feel bad about the whole simulation thing.
[Coke] I hope someone feels bad about my professional life! 20:04
at least there is free coffee, which I will now go drink.
vendethiel masak: gamergate is the worst possible answer to an existing problem 20:05
(of all the people I have on steam, exactly ZERO of them actually read the "professional gaming journalism" scene because we all know how poxy it is) 20:07
masak *nod* 20:08
vendethiel has suffered from doxxing in the past and wouldn't wish it to anyone, especially member of the opposite sex that are even more targeted... 20:11
avuserow o/ #perl6 20:31
hoelzro o/ avuserow 20:33
[Tux] tadzik, any workaround for panda? 20:46
masak .oO( a bamboo cage? ) :P 20:47
jnthn
.oO( a racoon? )
20:48
masak puts jnthn in the bamboo cage
jnthn It's cosy :) 20:49
jnthn [Tux]: What's the panda issue, ooc? 20:49
FROGGS racoons are sweet :o)
jnthn FROGGS: I...think that's macaroons... :)
[Tux] jnthn, won't install under rakudobrew
FROGGS jnthn: it creates the .work dir in panda/ and then creates a .work in .work and then a .work in .work/.work/ etc 20:50
masak sounds like too much .work
jnthn wtf... 20:51
FROGGS good that empty folder do not need any space on disk :o)
jnthn: we had similar problems when File::Find was used lazily
jnthn Do we suspect a Panda change, or a Rakudo change that broke it? 20:52
FROGGS the intend was to get a snapshot of what's in cwd, create cwd/.work, and copy all of cwd to .work to build/test it
but when it was used lazily, it was attempted to copy the .work too
jnthn: there is no panda change since 11 days 20:53
so, that's unlikely
jnthn ok
retupmoca .botsnack
yoleaux :D
dalek c: 6fd8df0 | paultcochrane++ | lib/Type/List.pod:
Document zip() builtin
21:04
c: b02b36f | paultcochrane++ | Makefile:
Add a "help" target with usage info to Makefile
c: 4903f5c | paultcochrane++ | htmlify.p6:
Merge branch 'master' of github.com:perl6/doc
FROGGS about jvm-star: we had 5 failing modules, three were affected by "the uri issue", two of the work, one has other problems now, Grammar::Profiler::Simple still fails (str idx -3) and Digest::MD5 fails like always 21:09
TL;DR we are down to three differently failing modules 21:10
jnthn FROGGS++ 21:12
FROGGS we really need to fix Digest: testers.p6c.org/reports/26717.html 21:19
OpenSSL depends on it for example...
ohh dear 21:22
now my panda (without pandabrew) also hangs
(on jvm) 21:25
PerlJam I little while ago, I did "rakudobrew build moar" and went to a meeting. When I got back just now, my system was super slow. It seemed to be hung on fetching panda with the moar process consuming most of the CPU.
s/I/A/
FROGGS delete that .work* dir in the panda folder 21:26
.panda-work actually
bisecting now... 21:27
PerlJam nice ... a never ending directory structure
FROGGS that one breaks panda: github.com/rakudo/rakudo/commit/1d...779a68cc50 21:32
masak 'night, #perl6
FROGGS I'll revert it and hope Mouq++ can check why that breaks panda 21:33
dalek kudo/nom: 7b153f5 | FROGGS++ | src/core/ (2 files):
Revert ".eager shouldn't flatten" (breaks panda rebootstrap)

This reverts commit 1d0501410068495a95ad5fa908fa77779a68cc50.
21:34
FROGGS .tell Mouq Sorry I had to revert your commit, but I dont have enough brane to hunt the panda rebootstrap issue today :/
yoleaux FROGGS: I'll pass your message to Mouq.
FROGGS |Tux|: panda should work now again (with latest rakudo) 21:35
PerlJam FROGGS++
FROGGS .tell tadzik github.com/rakudo/rakudo/commit/7b...f80e3dafba 21:36
yoleaux FROGGS: I'll pass your message to tadzik.
Mouq FROGGS: Oh dang, yeah no problem 21:47
yoleaux 21:34Z <FROGGS> Mouq: Sorry I had to revert your commit, but I dont have enough brane to hunt the panda rebootstrap issue today :/
FROGGS I guess it is about File::Find... 21:48
[Tux] rebuilds … 21:58
FROGGS++ 22:01
m: class C { }; my C @x; @x.perl.say 22:03
camelia rakudo-moar 7b153f: OUTPUT«Array[C].new()␤»
[Tux] m: class C { }; my C @x; @x[1..2].perl.say
camelia rakudo-moar 7b153f: OUTPUT«()␤»
[Tux] shouldn't a slice keep the type?
jnthn Slices always return parcels, iirc 22:04
[Tux] and parcels are about to go away, right?
jnthn Right, to be unified with List, which also doesn't presently exist in typed form. 22:05
dalek kudo/nom: 858ac4e | jnthn++ | src/ (3 files):
Catch wrong attribute usage in a regex.

Regexes are methods on Cursor (or some subclass of it), meaning that an attribute access inside of them is relative to that. Rather than failing silently or exploding noisily at runtime, catch the problem at compile time. The typed exception's message explains the issue and offers a suggestion; wording tweaks welcome.
[Tux] that was quite surprising to me
dalek ast: f9c334d | jnthn++ | S05-interpolation/regex-in-variable.t:
Tests for RT #122253.

Replaces some bogus tests with incorrect expectations.
22:06
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122253
jnthn [Tux]: How so?
[Tux] a slice of dogs is still dogs 22:06
jnthn [Tux]: As in, what were you trying to do?
Mouq [Tux]: Slices becoming Parcel is important because Parcels are what's used for general assignments
so @a[1,2] = (3,4) is like (@a[1], @a[2]) = (3,4) 22:07
(at least, that's my understanding)
jnthn Mouq: True, though that doesn't mean a typed Parcel-y thing couldn't exist.
Mouq doesn't understand how that changes under GLR
jnthn: True :) 22:08
jnthn .tell raiph 122892 and 122253 were about the same issue; I merged them, and then did the work needed to resolve them. 22:11
yoleaux jnthn: I'll pass your message to raiph.
Mouq obliterates panda and clones fresh to make sure his fix is actually a fix
[Tux] jnthn, any news on the profiler? (just curious, not being pushy) 22:12
jnthn [Tux]: No; I've been burried with $dayjob things for about the last week and a half, so I've not got much news on anything. 22:14
The patch I just did is the first useful thing I've done here for nearly a week... 22:15
jnthn should have a decent amount more time in the next few days, at least... 22:19
jnthn For now, sleep... o/ 22:19
[Tux] sleep tight
Mouq 'night jnthn :) 22:21
donaldh nqp: QAST::WVal.new[0] # jvm gives java.lang.RuntimeException: This type does not support positional operations 22:40
dalek ast: a9895b9 | Mouq++ | S02-types/whatever.t:
((1,2) xx *) needs to be .flattened to be (1,2,1,2,…)
ast: 1cbaf96 | Mouq++ | S03-metaops/eager-hyper.t:
Fix eager-hyper.t tests so that they're actually meaningful
Mouq nqp: QAST::WVal.new[0] 22:42
psch nqp-m: QAST::WVal.new[0]
donaldh camelia has died
Mouq She's just patiently waiting to be re-voiced :) 22:43
donaldh Anyhoo. Seems to be a behavioural difference between moar and jvm
camelia nqp-parrot: OUTPUT«Can't exec "./rakudo-inst/bin/nqp-p": No such file or directory at lib/EvalbotExecuter.pm line 188.␤exec (./rakudo-inst/bin/nqp-p /tmp/tmpfile) failed: No such file or directory␤Lost connection to server irc.freenode.org.␤» 22:43
..nqp-jvm: OUTPUT«Can't exec "./rakudo-inst/bin/nqp-j": No such file or directory at lib/EvalbotExecuter.pm line 188.␤exec (./rakudo-inst/bin/nqp-j /tmp/tmpfile) failed: No such file or directory␤Lost connection to server irc.freenode.org.␤»
( no output )
( no output )
dalek kudo/nom: a3b5619 | Mouq++ | src/core/List.pm:
Be more consistent about flattening with infix:<xx>
22:53
kudo/nom: b56fc0b | Mouq++ | src/core/metaops.pm:
Add support for hypers on lists ending in *

E.g., (1,2,3,*) «+« (4,5,6,7,8) === (5, 7, 9, 10, 11)
kudo/nom: 79661ac | Mouq++ | src/core/ (3 files):
Revert & fix "Revert ".eager shouldn't flatten" (breaks panda rebootstrap)"

This reverts commit 7b153f5c69c9a23124c5c608f697adf80e3dafba.
  .eager should actually be eager, even if it's called on a Parcel :P
More importantly, EAGER should actually eagerify its arguments. The issue was that it was making a Parcel, passing the Parcel to Any.eager to get flattened, and from there passed to List.eager. So we just make a flat List instead and call List.eager.
kudo/nom: 3da1bbd | Mouq++ | src/ (3 files):
Merge branch 'nom' of github.com/rakudo/rakudo into nom
Mouq dalek: You didn't die! :D
Mouq FROGGS++ for the 'eager' issues 22:54
dalek ast: 1d6747d | Mouq++ | S03-metaops/hyper.t:
Unfudge passing hyper tests
23:32
ast: 966d85b | Mouq++ | S03-metaops/hyper.t:
Add tests for RT #120662
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=120662
Mouq m: my @a=<a a a>;my @b=<b b b>;for (@a »,« @b) »,« @a -> $a, $b, $c {say "$a $b $c"} # RT #77746 23:40
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77746
camelia rakudo-moar 3da1bb: OUTPUT«Lists on either side of non-dwimmy hyperop of infix:<,> are not of the same length␤left: 6 elements, right: 3 elements␤ in sub hyper at src/gen/m-CORE.setting:21599␤ in block at src/gen/m-CORE.setting:21510␤ in block <unit> at /tmp/d2VerSVXcU:1…»
Mouq m: my @a=<a a a>;my @b=<b b b>;for (@a[] »,« @b) »,« @a -> $a, $b, $c {say "$a $b $c"} # RT #77746
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77746
camelia rakudo-moar 3da1bb: OUTPUT«Lists on either side of non-dwimmy hyperop of infix:<,> are not of the same length␤left: 6 elements, right: 3 elements␤ in sub hyper at src/gen/m-CORE.setting:21599␤ in block at src/gen/m-CORE.setting:21510␤ in block <unit> at /tmp/AIhRJ5K9WH:1…»
Mouq m: my @a=<a a a>;my @b=<b b b>;for (@a[*] »,« @b) »,« @a -> $a, $b, $c {say "$a $b $c"} # RT #77746
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77746
camelia rakudo-moar 3da1bb: OUTPUT«Lists on either side of non-dwimmy hyperop of infix:<,> are not of the same length␤left: 2 elements, right: 1 elements␤ in sub hyper at src/gen/m-CORE.setting:21531␤ in sub hyper at src/gen/m-CORE.setting:21606␤ in block at src/gen/m-CORE.setti…»
Mouq Err
m: my @a=<a a a>;my @b=<b b b>;for (@a[*] »,« @b) »,» @a -> $a, $b, $c {say "$a $b $c"} # RT #77746 23:41
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77746
camelia rakudo-moar 3da1bb: OUTPUT«a a b␤a a a␤b a a␤a b a␤»
Mouq m: my @a=<a a a>;my @b=<b b b>;for (@a »,« @b) »,» @a -> $a, $b, $c {say "$a $b $c"} # RT #77746 23:42
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77746
camelia rakudo-moar 3da1bb: OUTPUT«a a b␤a a a␤b a a␤a b a␤»
Mouq Okay, cool
If that looks wrong, that's because it's very misleading :P 23:43
m: my @a=<a a a>;my @b=<b b b>; say ((@a »,« @b) »,» @a).perl
camelia rakudo-moar 3da1bb: OUTPUT«Array.new("a", "a", "b", "a", "a", "a", "b", "a", "a", "a", "b", "a")␤»
Mouq m: my @a=<a a a>;my @b=<b b b>; say ((@a[*] »,« @b) »,» @a).perl
camelia rakudo-moar 3da1bb: OUTPUT«((("a", "a"), ("b", "a")), (("a", "a"), ("b", "a")), (("a", "a"), ("b", "a")))␤»
Mouq m: my @a=<a1 a2 a3>;my @b=<b1 b2 b3>; say ((@a »,« @b) »,» <c1 c2 c3>).perl 23:44
camelia rakudo-moar 3da1bb: OUTPUT«Array.new("a1", "c1", "b1", "c2", "a2", "c3", "b2", "c1", "a3", "c2", "b3", "c3")␤»
Mouq m: my @a=<a1 a2 a3>;my @b=<b1 b2 b3>; say ((@a[*] »,« @b) »,» <c1 c2 c3>).perl
camelia rakudo-moar 3da1bb: OUTPUT«((("a1", "c1"), ("b1", "c1")), (("a2", "c2"), ("b2", "c2")), (("a3", "c3"), ("b3", "c3")))␤»
Mouq .ask TimToady Do these look OK to you? irclog.perlgeek.de/perl6/2015-03-11#i_10262758 23:45
yoleaux Mouq: I'll pass your message to TimToady.
Mouq Sorry for the spam