»ö« 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!
Set by masak on 12 May 2015.
b2gills array and hash variables get initialized for you ( by default ) 00:00
m: my @a := my Array $a; say defined $a; say defined @a # you can make it undefined though
camelia rakudo-moar a436fe: OUTPUT«False␤False␤»
lucasb b2gills: understood, thanks 00:02
b2gills `defined` back in Perl 5 would always return true if you declared, or used array or hash variables beforehand.
which means if you had `use strict` then calling defined on them was pointless 00:03
lucasb yeah, I never used defined on arrays/hashes in P5 because perldoc says it is deprecated 00:04
00:11 VinceDee left 00:14 Akagi201 joined 00:17 AlexDani` left 00:18 TEttinger joined 00:27 BenGoldberg joined 00:33 dha left, davido_ left 00:35 Akagi201 left, davido_ joined 00:36 Akagi201 joined 00:37 tinyblak joined 00:39 tinyblak left, geekosaur left, gtodd left 00:40 geekosaur joined 00:41 gtodd joined 00:42 tinyblak joined 00:43 lucasb left 00:45 lolisa joined 00:52 atroxaper joined 00:57 atroxaper left 00:58 aborazmeh joined, aborazmeh left, aborazmeh joined 01:03 Akagi201 left 01:05 laouji joined 01:08 rmgk_ joined, rmgk left, rmgk_ is now known as rmgk 01:09 Akagi201 joined 01:10 asdf12z_ joined, vendethiel- left, gtodd left 01:12 RabidGravy left 01:13 vendethiel joined 01:14 geekosaur left, geekosaur joined 01:22 Akagi201 left 01:24 tinyblak left 01:26 yqt left 01:27 TEttinger left 01:29 Akagi201 joined 01:40 TEttinger joined 01:44 ilbot3 left 01:46 ilbot3 joined 01:53 cognominal left, cognominal joined 01:54 aborazmeh left 01:56 vendethiel left 01:58 lolisa left 02:03 noganex joined 02:06 noganex_ left 02:18 dayangkun joined, vendethiel joined 02:28 laouji_ joined 02:31 laouji left 02:32 tinyblak joined 02:42 nys left 02:45 laouji_ left, laouji joined 02:47 Sqirrel left 02:55 Sqirrel joined 02:58 jack_rabbit joined 03:04 vendethiel left 03:07 vendethiel joined 03:09 jack_rabbit left, kanl joined 03:25 BenGoldberg left
dalek kudo/nom: 4741d89 | hoelzro++ | INSTALL.txt:
Remove reference to readline in INSTALL.txt
03:37
kudo/nom: 1ea7b37 | hoelzro++ | INSTALL.txt:
Mention Linenoise for line editing features
03:38 tinyblak left 03:41 atroxaper joined 03:45 khw left, atroxaper left 03:49 kaare_ joined 03:51 vendethiel left 04:18 laouji left 04:19 laouji joined 04:21 laouji left 04:22 kanl left, laouji joined, kanl joined
ugexe sorry, looks like the comp unit pr i sent is failing jvm. it should work, but on jvm run/shell give a bad exitcode *if* any of :out/:err/:merge are used. However, the command still is executed properly and (for instance) stores the stdout in $proc.out properly 04:27
so precompilation still finishes successfully... its just marked as a failure because of the status check -> github.com/rakudo/rakudo/blob/bf71...it.pm#L133 04:28
perl6-j -e "my $proc = run('perl', '-v', :out, :!chomp); say $proc.status" # returns 65280 04:29
# but $proc.out.lines outputs the perl -v output 04:30
04:30 aborazmeh joined, aborazmeh left, aborazmeh joined
ugexe perl6-j -e "my $proc = run('perl', '-v', :!chomp); say $proc.status" # returns 0 04:31
04:32 kanl left, kanl joined 04:39 tinyblak joined 04:43 tinyblak left 04:44 pochi joined 04:54 skids left 04:55 dustinm` left 05:03 dustinm` joined
ugexe actually im not sure if there is any fallout. i just expect there may be 05:04
05:10 vendethiel joined
kanl i'm experiencing a hash slice oddity. 05:17
gist.github.com/anonymous/0fdb5c3da8c7b0d80934
while i think i can understand any justification of the different behaviors, i find it quite counterintuitive. 05:18
is this by design or might this be a known issue? 05:19
or it also could simply be me using it all wrong :) 05:21
05:21 atroxaper joined 05:22 Blub\1 left
ugexe id say you are correct. not sure if its a known issue, but it looks like the type of thing that may be a side effect of the list refactor 05:35
kanl this apart, it'd be pretty magical to { say %h<1 2><a> } and get "1 (Any)" instead of errors, and be consistent with { %h<1><a> } getting 1.
ugexe unless its some autovivification thing 05:36
but they all have the same .perl output
kanl but if that can't be had, at least %h<...><foo> should be made consistent :) 05:37
ugexe %h{1|2}<a> might work
kanl err, .map i mean
m: my %h = 1 => $%( a => 1 ), 2 => $%( e => 4 ); say %h<1|2><a>; 05:39
camelia rakudo-moar 1ea7b3: OUTPUT«(Any)␤»
kanl m: my %h = 1 => $%( a => 1 ), 2 => $%( e => 4 ); say %h{1|2}<a>;
camelia rakudo-moar 1ea7b3: OUTPUT«any(1, (Any))␤»
kanl cool, thanks ugexe! 05:40
ugexe m: my %h = 1 => $%( a => 1 ), 2 => $%( e => 4 ); say %h{1&2}<a>;
camelia rakudo-moar 1ea7b3: OUTPUT«all(1, (Any))␤»
kanl as for the oddity in the gist, do i need to ticket it or just wait for GLR to automagically fix it? 05:42
05:44 mr-foobar left 05:46 Psyche^_ joined 05:50 Psyche^ left 05:59 diana_olhovik joined 06:11 domidumont joined, domidumont left, domidumont joined 06:13 _mg_ joined, domidumont1 joined 06:16 domidumont1 left, domidumont left 06:17 domidumont joined 06:21 gfldex joined, rickbike left 06:22 [Sno] joined 06:24 Sqirrel left 06:30 vendethiel left 06:32 telex left 06:34 telex joined 06:35 Sqirrel joined 06:52 domidumont left 06:57 fxbrain joined, fxbrain left 07:05 zakharyas joined 07:07 RabidGravy joined
Quom m: my %h = 1 => $%( a => 1, b => 2, c => 3 ), 2 => $%( e => 4, f => 5, g => 6 ); say %h{1,}.map: *<a> 07:12
camelia rakudo-moar 1ea7b3: OUTPUT«1␤»
Quom ^^
err
kanl: ^^
Also, when you did %h{[1]}, that did a lookup of %h{1}, but only because it did %h{[1].length}. My understanding is that this will be more intuitive post-GLR 07:13
07:14 aborazmeh left
Quom (In that [1] will be more like @([1]) instead of $[1]) 07:15
07:17 g4 joined, g4 left, g4 joined
Quom kanl: However it looks like all these cases will work with multi-dim syntax, %h{@i;<a>} 07:19
07:19 aborazmeh joined, aborazmeh left, aborazmeh joined 07:21 Possum left, Possum joined 07:26 domidumont joined
RabidGravy morning! 07:28
masak \o
07:33 Sqirrel left 07:35 mr-foobar joined, Sqirrel joined 07:36 abraxxa joined, zacts left
DrForr Morning all... 07:36
07:38 laouji_ joined
masak ahoy, DrForr 07:38
lizmat good *, #perl6! 07:39
jnthn: line 542 in Str.pm causes breakage on JVM with Str.perl: if $opener >= 256 && +uniprop($opener, 'Canonical_Combining_Class')
uniprop not being implemented on the JVM 07:40
07:41 laouji left
DrForr o/ 07:42
lizmat DrForr \o
DrForr \o/ ,o/ ,o. \o. \o/ 07:44
jnthn morning, #perl6 07:47
yay, a decent-er night of sleep at last...
lizmat: d'oh, I knew .NFC wasn't on JVM, didn't realize uniprop wasn't either
lizmat I'm just making that if conditional on moar, seems to pass the tests 07:48
dalek kudo/nom: 0347787 | lizmat++ | src/core/Str.pm:
We no haz uniprop on JVM
07:49
jnthn lizmat++ 07:50
07:54 laouji_ left 07:57 amurf left, brrt joined 07:59 zakharyas left 08:02 laouji joined, dakkar joined 08:04 domidumont left, domidumont joined 08:05 oha joined 08:07 mr-foobar left 08:10 darutoko joined
lizmat m: my $a; { $a = ENTER 42 }; say $a # now works 08:12
camelia rakudo-moar 1ea7b3: OUTPUT«42␤»
lizmat m: my $a; { $a = LEAVE 42 }; say $a # shouldn't this work also?
camelia rakudo-moar 1ea7b3: OUTPUT«(Any)␤»
08:15 Woodi left, Woodi joined
masak lizmat: I can't see why not. 08:16
lizmat more generally, I guess that goes for all phasers,no? 08:17
masak sorry, my mind fails to generalize. what goes for all phasers? 08:18
lizmat to be usable as a r-value
jnthn No, it shoudln't work.
S04 has a list. It tells you exactly which ones work that way. 08:19
08:19 TEttinger left
lizmat checks 08:19
jnthn Also, think about when a LEAVE executes
That $a = ... happens *before*
So it'd be utterly useless
masak oh, troo
m: my $a; { LEAVE $a = 42 }; say $a
camelia rakudo-moar 1ea7b3: OUTPUT«42␤»
masak already works.
jnthn I think there's one phaser in the list now that should be r-value but ain't
And that's FIRST 08:20
lizmat m: my $a; { $a = LEAVE 42 }; say $a # shouldn't this be a compile time error then ?
camelia rakudo-moar 1ea7b3: OUTPUT«(Any)␤»
jnthn And I have no darn clue where we're meant to keep the state
masak we could probably offer a warning when the phaser result can never be ready in time.
jnthn lizmat: Not worth the bloat
Maybe something for a lint tool
masak funny that lizmat and I had the idea at the same time, though :)
I agree that it might be too insignificatnt to merit a warning 08:21
lizmat m: my $a; for ^1 { $a = FIRST say "first" }; say $a # so this one is not up to spec yet, then 08:22
camelia rakudo-moar 034778: OUTPUT«first␤(Any)␤»
jnthn lizmat: Correct.
I actually went through the list yesterday
uh, 2-3 days ago I guess
'cus I was fixing ENTER
I don't know how on earth to implement FIRST as an r-value.
Probably something horrible with dynamic scoping... :)
lizmat perhaps FIRST should be implemented as a sort of "once" ? 08:23
08:23 mr-foobar joined
jnthn Lets wait until after GLR with it 08:24
Because the code-gen for loops is going to be changing.
(all of them)
lizmat yeah, fair enough :-) 08:26
hmmm... on what is most likely going to be the hottest day ever in NL, our tap water just turned brown :-( 08:30
jnthn :-( 08:31
08:33 domidumont1 joined, domidumont left 08:35 Sqirrel left
lizmat it appears to be just excess Fe and Mn, drinkable they say, just don't do your washing with it 08:35
08:36 Sqirrel joined
lizmat still, having tea coloured water coming out of your tap 08:36
sorta weird
masak .oO( excess of Fe... oh, the irony )
DrForr Beat me by -><- that much.
08:38 spintronic left, spintronic joined
masak DrForr: don't worry, I'll let you do a pun on magnesium :P 08:38
DrForr Elementary, my dear. 08:39
08:39 pdcawley joined
arnsholt Isn't Mn manganese though? =) 08:41
08:42 [Sno] left
DrForr (╯°□°)╯︵ ┻━periodic┻ 08:42
lizmat yeah, although the Mn is not as animated as one would expect 08:43
Mg in the water would be rather explosive and not brown at all
(having tried that once in high school) 08:44
(under semi-controlled conditions)
masak oh, my bad. manganese.
much nicer to have in water, as lizmat++ points out. 08:45
lizmat
.oO( chinese manga )
masak generally, the things on the far left in the table are quite reactive.
DrForr Mostly white, excluding the bits of porcelain from the toilet you chucked it in...though of course I have no experience of that.
ShimmerFairy I'm guessing there's no way for an inner class to access the outer class' attributes, is there? That is, class A { has $.foo; class B { method bar { do-stuff-with($!foo); } } } 08:46
DrForr Na,Ce,Mg,Rb...
lizmat ShimmerFairy: do stuff with $.foo ?
08:46 zakharyas joined
lizmat so . instead of ! 08:47
ShimmerFairy I need to restart hexchat O_O
08:47 ShimmerFairy left 08:48 ShimmerFairy joined
ShimmerFairy There we go; my font became all boxes everywhere, and now my usual monospace font looks different. Hm. 08:49
lizmat: ah, that makes sense. I'm used to using $!foo whenever I'm in a class. 08:50
masak ShimmerFairy: no, even `$.foo` would try to find that accessor in B.
jnthn Um, also no, there's no inner/outer class relationahip
ShimmerFairy masak: yeah, I found that out just now :)
masak ShimmerFairy: I've come to realize that if you really want inner classes in Perl 6, what you need to do is have an attribute in the inner class pointing to an instance of the outer class. 08:51
ShimmerFairy: and then go through it. I do that sometimes.
ShimmerFairy jnthn: darn, I was hoping I could avoid duplicating attributes between two classes
masak to be honest, that's probably a cleaner solution than Java's A.this.foo syntax :)
08:52 [Sno] joined, RabidGravy left
ShimmerFairy Well, that sucks then, though I'm not surprised. 08:52
masak oh! had this thought about PDL autolooping yesterday that I didn't share: 08:53
it feels like this problem is less about custom keywords and slangs, and more about custom data containers.
that is, the solution might rest purely in OO space.
we certainly have the operator flexibility to handle it. don't have to make it all about methods. 08:54
08:54 iH2O joined
ShimmerFairy masak: The "reference to another class" thing feels too C-like for my taste in Perl 6, so I'd like to avoid that if possible. I don't know why it feels C-like to me, it just does. 08:55
lizmat wouldn't a simple 'class B is A', and then use $.foo do it then ?
ShimmerFairy: or is that not what you meant?
08:55 iH2O left
masak that wouldn't create a link between the original A object and the B object, though. 08:56
ShimmerFairy lizmat: sure, but it's not really appropriate in this case. I have a "Board" class and a "Piece" class. The Board has an array of 'Piece's
08:56 RabidGravy joined
RabidGravy I blame the weather 08:56
is the API of IO::Socket::Async stable enough to merit documenting it?
masak ShimmerFairy: why do you feel a need for a piece to know about its board?
ShimmerFairy masak: The piece has a "barriers" method to calculate what spots it's always in, which necessitates knowing the current bounds. (The edges of the board being a first pass, at least.) 08:57
jnthn RabidGravy: Well, it's been pointed out that it has some inconsistencies with some other places, though I suspect that'll boil down to renaming at most 08:58
08:58 bin_005 joined, vendethiel joined
dalek kudo/nom: 2f61e18 | lizmat++ | src/core/Exception.pm:
Grammar (english) fix
08:58
masak ShimmerFairy: I'd be inclined to make the board->piece link unidirectional. then maybe that method/knowledge belongs on the board object.
ShimmerFairy masak: That's what I thought initially, but being able to do something like @!pieces».barriers seems too nice to not have 08:59
RabidGravy jnthn, cool. I have a medium term view to making a networking page in /language
lizmat list of JVM problems (on OSX at least) updated: gist.github.com/lizmat/573712315223a7bbca11 09:01
09:01 pdcawley left 09:02 espadrine joined, pdcawley joined
masak ShimmerFairy: well, design is about making that kind of tradeoff. the niceness of your application hinges on you making them well, so I'd stop and think carefully about this bit before proceeding. 09:03
s/application/game/
lizmat afk& 09:04
ShimmerFairy masak: The ultimate goal is a program that figures out how to divide a hexslide (or in my case right now, the square version) board into partitions. And it's very early in the coding process, of course :)
masak unidirectional links simplify things a great deal, but I agree there's also a cost. the @!pieces».barriers reason you mentioned above wouldn't be enough to sway me from using unidirectional links.
ooh 09:05
right, because the partitions can be analyzed independently
ShimmerFairy masak: yeah, I don't know if that will ever actually happen, it's just that in general it seemed natural to define the method for one Piece and then loop over Pieces, and the natural way to define a function on one Piece is as a method :)
masak actually, if you still retain the criterion of a bullet slide reaching the far end, only one partition will matter
ShimmerFairy masak: For cutting down on duplicate boards, you need to know partitions; Knowing the contents of each groove isn't sufficient, it's the contents of each partition that lets you determine that. (At least, that's what I've worked out in my head, who knows how true that is? :P) 09:07
masak sounds about right. 09:08
but also, see above: only the partition with the bullet ever matters if your goal is to "solve" the board. 09:09
09:09 abraxxa left, abraxxa joined 09:10 atroxaper left
masak actually, I had another idea long ago: to divide all the possible boards into "classes". each class has a description like "2-piece, 3-piece in groove d, 3-piece in groove k" and contains all possible configurations that match that description. 09:11
the configurations make up the nodes in a graph, with the edges being possible moves. 09:12
ShimmerFairy masak: Yeah, I think perhaps the goal is "is the space in front of the bullet one partition (solvable) or more (unsolvable)"? Interesting idea if that holds true.
09:12 cognominal left
masak and then you can break down the problem, solving it per class. 09:12
though the classes might be very large, I don't know.
there's certainly quite a few of them :>
ShimmerFairy masak: Here's a simple example of how the groove contents aren't sufficient for finding unique boards, in case you're interested: gist.github.com/lue/0d5b7d5b2608c2120ee9 09:13
BTW, in case it's not clear, or there can be multiple definitions, my definition of "equivalent boards" is "one can be rearranged to be the other, using only legal moves" 09:15
09:17 rurban joined
ShimmerFairy masak: with that classes idea, it certainly depends on how far you want to go classify, and if you want to try defining inheritance between classes :P (class 2-piece, 3-piece in groove d 'is' class 2-piece) 09:19
09:20 aborazmeh left
masak oh, that's what you mean by barriers. 09:20
well, I prefer to think of it in terms of graphs. your "equivalent boards" becomes my "component of a graph".
a given class graph can certainly have more than one component.
ShimmerFairy (The barriers method should probably take a list of bounds anyway, and be more generalized like that.) 09:21
I don't know where I came up with the term "barriers", by the way. "dividers" would be much more appropriate. 09:22
sergot hiho
09:23 cognominal joined
masak sergocie! \o/ 09:25
tadzik hello hello 09:26
DrForr Morning. 09:27
RabidGravy I'm just going to kebab IO::Socket::Async right now unless anyone has any objections?
DrForr Only if you don't add onions and peppers. 09:28
RabidGravy but plenty of chilli sauce? 09:29
DrForr Oo, true, don't forget the sriracha.
09:32 rurban left
DrForr ShimmerFairy: If I understand what you're after, maybe partitions would be more appropriate? 09:33
ShimmerFairy DrForr: "partitions" is for the space that gets divided by the dividers :) 09:34
DrForr Oh, true. I tend to think of 'partitioning the search space' in these cases.
lizmat hmmm, looks like a436fecb0c9143d6f49c9bd breaks t/spec/S24-testing/line-numbers.t
BooK where can I find out about perl6 and threads? 09:35
lizmat S17 09:36
09:36 aborazmeh joined, aborazmeh left, aborazmeh joined
lizmat S17:01 09:36
synbot6 Link: design.perl6.org/S17.html#line_01
09:36 sqirrel_ joined
BooK thanks 09:37
lizmat yw :-)
09:37 mr-foobar left 09:38 mr-foobar joined
BooK lizmat: and do they work better than in perl 5? 09:38
lizmat they can't really be compared, I would say
Perl ithreads are not really threads
they're really old-Unix style, pre COW, forks 09:39
P6 concurrency *is* true concurrency, without copying anything
RabidGravy BooK, see also docs.perl6.org/language/concurrency which has somewhat of an overview
09:39 virtualsue joined
lizmat but with more responsiblity for developers 09:39
tadzik where is pmichaud's writeup on GLR? 09:40
lizmat github.com/perl6/specs/blob/master...-draft.pod 09:41
tadzik thanks lizmat
oha: ^
09:43 tinyblak joined 09:45 amurf joined 09:48 itz__ joined, dams joined, tinyblak left 09:49 itz_ left 09:50 amurf left 09:54 rurban joined
RabidGravy KEBABED! github.com/rakudo/rakudo/pull/456 09:54
dalek ast: 974e459 | lizmat++ | S12-class/stubs.t:
Make test grammar correction free
kudo/nom: 1950206 | RabidGravy++ | src/core/IO/Socket/Async.pm:
Kebab case and deprecate chars_supply, bytes_supply
09:55
kudo/nom: d9e3070 | lizmat++ | src/core/IO/Socket/Async.pm:
Merge pull request #456 from jonathanstowe/kebab-io-socket-async

Kebab case and deprecate chars_supply, bytes_supply
09:55 _mg__ joined 09:56 _mg_ left, _mg__ is now known as _mg_ 09:58 prammer left, lizmat_ joined 09:59 prammer joined, rindolf joined, lizmat_ is now known as lizmat 10:02 itz_ joined 10:03 atroxaper joined, itz__ left, aborazmeh left 10:05 brrt left 10:06 itz_ left
lizmat .tell FROGGS there's something weird going on with repeated qqx[], it seems 10:07
yoleaux lizmat: I'll pass your message to FROGGS.
timotimo DEPRECATED always makes stuff sooooo slow, but in this case it's methods that you only call every now and then, so it's fine
lizmat DEPRECATED is a lot faster nowadays, now that we have lazy backtraces
10:07 atroxaper left
lizmat but yeah, there should be an incentive to migrate :-) 10:07
timotimo oh, cool
10:07 atroxaper joined
lizmat is looking at her screen and the only thing she can think of is "siesta" 10:08
cognominal more like coma here :( 10:10
10:11 pdcawley left 10:12 itz_ joined 10:13 grondilu_ is now known as grondilu
lizmat .tell FROGGS looking at failures in t/spec/S24-testing/line-numbers.t and t/spec/S32-io/IO-Socket-INET.t 10:13
yoleaux lizmat: I'll pass your message to FROGGS.
10:13 aborazmeh joined, aborazmeh left, aborazmeh joined, grondilu left, grondilu joined
virtualsue gets the latests rakudo star after noticing that moarvm isn't building today 10:13
jnthn virtualsue: "isn't building"? 10:14
virtualsue well, isn't linking
10:14 blackbolt joined, tinyblak joined
jnthn Hm...if you still have it, could you gist the failure mode? 10:14
timotimo si, esta bene 10:15
virtualsue gist.github.com/virtualsue/0b757b139f3946c2515e 10:16
timotimo virtualsue: that's probably from a fresh extraction and clean build? 10:20
virtualsue yes 10:21
well, after a pull and a make clean
jnthn Presume a re-Configure too? 10:22
virtualsue nope, will do that after i get back
timotimo ah
that'll be the problem; new files were added
that requires a re-configure
10:23 pdcawley joined 10:27 itz joined
itz morning 10:27
nwc10 ^good :-) 10:29
10:30 sqirrel_ left
masak have the appropriate amount of morning goodness 10:30
nwc10 test!
10:30 CIAvash joined 10:33 rindolf left
blackbolt morning, timotimo, can you help me with "exit" method in GTK::Simple? 10:33
10:42 itz left 10:47 bin_005 left, kaare_ left 10:48 aborazmeh left
timotimo i haven't touched GTK::Simple in a long time 10:53
what's the problem?
blackbolt 4 dec 2014: "quick and dirty implementation of GTK::Simple::Window" 10:54
i need secend window, and there is problem with method exit 10:55
can you run this: pastebin.com/Ajqh1CpH 10:59
10:59 kaare_ joined
ShimmerFairy m: my @a = [1,2],[3,4]; my @b = [3,4],[5,6]; say @a (&) @b # it's very annoying that this doesn't DWIM 11:06
camelia rakudo-moar d9e307: OUTPUT«set()␤»
11:07 avalenn_ is now known as avalenn 11:08 dayangkun left
ShimmerFairy I can see why it happens (=== right?), but that doesn't mean I like it :) 11:08
11:10 Zimbabwe joined 11:11 Zimbabwe is now known as Guest57881 11:12 _mg_ left, cdc is now known as les_logs 11:13 laouji left 11:14 _mg_ joined, les_logs is now known as ma_liberte
ShimmerFairy Is there any good reason why it _shouldn't_ do what I want it to? 11:15
11:15 ma_liberte is now known as cdc
timotimo you want the result to be [3,4], correct? 11:16
it's hard to do when you have mutable lists involved :\
Ulti jnthn just tried running your golf helper demo and got "Invalid GC status observed; aborting" 11:17
on OSX with rakudo moar built about 5 minutes ago 11:18
ShimmerFairy timotimo: yes, and considering [3,4] ~~ [3,4] , I'm tempted to say it's not that hard (but I imagine it's not as easy as ~~ makes it seem :P)
timotimo mhh
11:19 Akagi201 left
ShimmerFairy The only solution I see so far would be to turn those two-element lists into complex numbers, but that's really ugly. 11:21
timotimo m: my @a = [1,2],[3,4]; my @b = [3,4],[5,6]; say @a.grep(@b) 11:22
camelia rakudo-moar d9e307: OUTPUT«␤»
oha if i die [1,2,3] how can i distinguish it in a catch from a die "string" ?
timotimo m: my @a = [1,2],[3,4]; my @b = [3,4],[5,6]; say @a.grep(any(@b))
camelia rakudo-moar d9e307: OUTPUT«3 4␤»
ShimmerFairy Heh, that actually would work. Shame I can't use setops for the same thing, though. 11:23
11:24 brrt joined, grondilu left
timotimo yeah :| 11:25
you can redefine the set ops lexically
ShimmerFairy Considering I'm only doing this once (at least so far), I don't think it's quite worth redefining the setops :) 11:27
Oh, that reminds me, does the CORE setting still have that "no unicode characters" limitation?
timotimo OK 11:28
not sure 11:29
ShimmerFairy m: my @a = [1,2],[3,4]; my @b = @a[0]; say @a.perl; say @b.perl; 11:33
camelia rakudo-moar d9e307: OUTPUT«[[1, 2], [3, 4]]<>␤[[1, 2]]<>␤»
ShimmerFairy I don't think @b is supposed to be nested like that (but I just realized I may be the one who's mistaken)
gfldex m: my @a = [1,2],[3,4]; my $b = @a[0]; say @a.perl; say $b.perl; 11:35
camelia rakudo-moar d9e307: OUTPUT«[[1, 2], [3, 4]]<>␤[1, 2]␤»
11:35 amurf joined
ShimmerFairy I get why it happened, but I still want to say it's a bug that assigning a 1D row from a 2D array to an array results in a 2D array. 11:36
gfldex m: my @a = [1,2],[3,4]; my $b = @a[0]; my @c; @c.push($b); say @a.perl; say $b.perl; say @c.perl; 11:37
camelia rakudo-moar d9e307: OUTPUT«[[1, 2], [3, 4]]<>␤[1, 2]␤[[1, 2]]<>␤»
timotimo it's hard to put something into the initial @a that would flatten when you take it out but not flatten it into the original @a directly
m: my @a = [1,2]<>, [3,4]<>; say @a.perl; my @b = @a[0]; say @b.perl
camelia rakudo-moar d9e307: OUTPUT«[1, 2, 3, 4]<>␤[1]<>␤»
gfldex i think rakudo is right because (in my eyes) my @b = @a[0] is the same as @b.push(@a[0]) 11:38
sjn also gets surprised by ShimmerFairy's example
ShimmerFairy timotimo: Yeah, but it's still a bit of a WAT that I my 1D row became a 2D array inside @b (it caused a bug when @b[0] += $var became 2 (where $var == 0)) 11:39
s/I//
timotimo mhm
i need to run now :)
masak ShimmerFairy: I don't think it's surprising.
11:39 amurf left
ShimmerFairy masak: surprised me :) 11:39
gfldex m: my @a = [1,2],[3,4]; my @b := @a[0]; say @a.perl; say @b.perl; 11:40
camelia rakudo-moar d9e307: OUTPUT«[[1, 2], [3, 4]]<>␤[1, 2]<>␤»
masak ShimmerFairy: you need to realize that assignment to an array assigns to the *insides* of that array.
ShimmerFairy: like `my @a = 1, 2, 3;`
gfldex = is not the same then = as found in most languages
masak ShimmerFairy: there's no mention of the actual array there. you just get it for free.
gfldex we have := that does most of the = in non-perl6
ShimmerFairy gfldex: except := allows me to modify the original array, which I do _not_ want in this case.
masak ShimmerFairy: same thing with `my @b = @a[0];` -- there's two arrays in play here: @a[0], and the surrounding, implicit array. 11:41
gfldex if you want to clone, you should clone
m: my @a = [1,2],[3,4]; my @b = @a[0].clone; say @a.perl; say @b.perl;
camelia rakudo-moar d9e307: OUTPUT«[[1, 2], [3, 4]]<>␤[1, 2]<>␤»
ShimmerFairy I have never used (or even really known about) .clone in my life. What good is it?
masak: I still maintain that my expectation is more correct than what happened. I really hope this isn't going to stay the same post-GLR :P 11:42
masak gfldex: heh, that one surprised me :) why is it only one layer of array there?
gfldex it garantees to make a copy (that may be CoW tho)
moritz ShimmerFairy: DateTime uses it internally for creating derived objects
gfldex masak: i have no idea
11:43 cognominal left
gfldex .clone may even flatten at a spot where it shouldn't 11:43
ShimmerFairy masak: the implicit outer [] on assigning to @a vars used to trip me up when I started out with Perl 6, and I'm surprised it tripped me up again. I _really_ don't like it whenever it does.
gfldex m: my @a = [1,2,[5,6]],[3,4]; my @b = @a[0].clone; say @a.perl; say @b.perl; 11:44
camelia rakudo-moar d9e307: OUTPUT«[[1, 2, [5, 6]], [3, 4]]<>␤[1, 2, [5, 6]]<>␤»
masak ShimmerFairy: I kind of like it. 11:45
ShimmerFairy: it's one of the benefits of using the @ sigil
ShimmerFairy: bit less clutter.
ShimmerFairy masak: I've gotten used to it, but I wouldn't say I like it (esp. right now) :)
masak *nod*
it is quite unusual, I'll give you that.
and in that sense, it's definitely not Least Susrprise.
ShimmerFairy masak: I especially think it's bad that I can't easily take a 1D slice of a 2D array in this case; the fact that I have to do some kind of trick (mine is @a[0].flat) feels wrong here. 11:46
masak *nod*
Perl 5 has it easier there, because it flattens everything. 11:47
ShimmerFairy I really hope the GLR will eliminate most, if not all, of the problems I've run into with lists over the years :) . It's the one part of Perl 6 I've never been able to navigate without one or two frustrations (see the failure of set intersection earlier for another example) 11:48
gfldex I like that fact that i have to keep := and .clone in mind because I found myself on the wrong end of a stick that filled all my RAMs a few times in the past
11:48 atroxaper left
gfldex please dont fill all my RAMs :( 11:48
ShimmerFairy $a := $b is more akin to T& a = b , in my mind 11:49
kanl Quom: thanks. 11:50
11:54 AlexDani` joined 11:55 Guest30472 is now known as felher 11:57 colomon left 12:04 rindolf joined
lizmat ShimmerFairy, timotimo : re irclog.perlgeek.de/perl6/2015-07-02#i_10838986 , no the CORE settings can haz unicode (now that parrot is no longer supported) 12:08
ShimmerFairy lizmat: that's what I thought. Maybe someone should go through and unicode-ify the CORE at some point, now that there's no real reason not to. 12:10
lizmat wrt to set operators, I've already done that
ShimmerFairy That you did. I forgot the last set_operators.pm I looked at was a quite old one :)
lizmat it was f4de5f36 12:11
RabidGravy anyone fancy golfing this async echo client example: gist.github.com/jonathanstowe/40ae...342d3ac244 - it works with the example echo server in the IO::Socket::INET but I can't get it shorter and work reliably
lizmat goes back to siestaing
12:21 rurban left, rurban joined 12:23 tinyblak left
BooK just ran my first perl6 oneliner 12:30
or at least my first since 2007
RabidGravy and did you get sucked into an alternate dimension? 12:31
BooK I'm still waiting for the ship to pick me up
RabidGravy cool
BooK I think I'll try to see if I can port Git::Repository to perl 6 12:32
I sure hope there won't be any ugly implementation details as there are in the perl 5 version
12:33 colomon joined
RabidGravy there probably will be but you can just hide them better ;-) 12:35
12:35 colomon left 12:36 rindolf left 12:37 colomon joined 12:41 tinyblak joined 12:49 tinyblak left 12:53 itz joined 12:55 rindolf joined 13:04 itz__ joined
hoelzro morning #perl6 13:04
13:04 itz___ joined 13:06 itz left, itz___ is now known as itz, itz_ left 13:07 tinyblak joined 13:10 itz_ joined, itz___ joined 13:11 itz left, itz_ is now known as itz, itz__ left
masak morning, hoelzro 13:12
hoelzro morning masak
BooK so, where do I find the methods for an IO::Pipe object? 13:13
doc.perl6.org/type/IO%3A%3APipe 13:14
Juerd 404
13:15 itz_ joined
sjn doc.perl6.org/type.html # has no IO::Pipe listed 13:16
13:16 itz__ joined
BooK perl6 -e 'say run( "ls" ).out.^methods' # introspection can help, in the absence of docs :-) 13:16
13:16 nys joined 13:17 itz left, itz__ is now known as itz
moritz m: say IO::Pipe.^mro 13:17
camelia rakudo-moar d9e307: OUTPUT«IO::Pipe is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:1␤ in method gist at src/RESTRICTED.setting:33␤ in block <unit> at /tmp/Xdb3nlX3Ng:1␤␤»
13:18 itz___ left
moritz BooK: I think IO::Pipe isa IO::Handle, so doc.perl6.org/type/IO::Handle might be of some interest 13:18
BooK perl6 -e 'say run( "ls" ).out.^parents' 13:19
(IO::Handle)
perl6 -e 'say run( "ls" ).out.lines' # dies loudly 13:20
13:20 g4 left
moritz uhm 13:21
don't you need to say run("ls", :out) to make .out a Pipe? 13:22
otherwise it might be just a type object
BooK I don't know, this is my first hour coding in perl 6
moritz plesae try say run( "ls", :out ).out.lines 13:23
BooK yes, that worked, except for the newlines
.say for run( "ls", :out ).out.lines # DWIM 13:24
moritz it chomps by default; add a :!chomp if you don't want it to chomp
run('ls', :out, :!chomp)
BooK where do I find those adverbs ?
moritz doc.perl6.org/type/Proc 13:25
it's documented for &run and Proc.new together
BooK yes, just saw that
moritz maybe I should add a heading for 'sub run', just to have it searchable 13:26
BooK "Setting one (or more) of them to True makes the stream available as an IO::Pipe object of the same name, so for example $proc.out." # this is why I need the :out ?
moritz right
BooK oooh, because if I say :out = $some_other_pipe, then it will just pipe the data to the other? 13:27
moritz :out($some_other_pipe) or out => $some_other_pipe
yes
BooK ok, let me try to run ls | sort this wya
13:28 g4 joined, g4 left, g4 joined
moritz the synopsis has an example for that 13:28
13:28 skids joined
moritz well, echo | cat -n 13:28
but same principle
BooK just trying to figure it out by myself
to see how intuitive it is for this perl 5 dinosaur
moritz BooK: fwiw if you have feedback on how to improve the docs, feel free to share here and/or on github.com/perl6/doc/issues/ 13:29
BooK I guess I first need to understand how they are organized
13:30 blackbolt left
BooK of course, my first attempts hangs 13:31
dalek kudo-star-daily: 33a7392 | coke++ | log/ (9 files):
today (automated commit)
rl6-roast-data: 549528f | coke++ | / (9 files):
today (automated commit)
13:38 rurban left 13:39 yqt joined 13:42 Akagi201 joined
BooK so, let's say I have a class with a $.dir attribute, which is a IO::Path. I want to be able to call new with a Str, and get a IO::Path in my object 13:50
is that done with BUILD ?
masak yes
BooK but can I do something like $!dir = IO::Path.new($.dir) if $.dir.isa(Str) ? 13:51
13:51 g4 left
masak $!dir = $!dir.IO if $!dir ~~ Str 13:52
Juerd If you're going to use the $!, why not all the way?
masak you should all the way in submethods
[Coke] yawns
masak BooK: might even be able to skip the `if`, given that .IO will tend to do the right thing if you already have an IO::Path 13:53
BooK: also might be possible to do this with a coercion type in the param list: IO::Path(Str)
m: sub foo( IO::Path(Str) $file ) { say $file }; foo( "file1" ) 13:54
camelia rakudo-moar d9e307: OUTPUT«Method 'IO::Path' not found for invocant of class 'Str'␤ in sub foo at /tmp/9Ay0c0HlFO:1␤ in block <unit> at /tmp/9Ay0c0HlFO:1␤␤»
masak meh :/
13:54 colomon left
masak m: sub foo( IO(Str) $file ) { say $file }; foo( "file1" ) 13:54
camelia rakudo-moar d9e307: OUTPUT«"/home/camelia/file1".IO␤»
masak oh, that works.
m: sub foo( IO() $file ) { say $file }; foo( "file1" )
camelia rakudo-moar d9e307: OUTPUT«"/home/camelia/file1".IO␤»
masak BooK: ^ 13:55
BooK I see 13:56
hoelzro when I was building the docker 2015.06 rakudo star image yesterday, I was bitten by the lack of readline facilities. Any chance we could add Linenoise to rakudo star?
moritz does it work on Windows?
does it need a C compiler? 13:57
oha m: "abc" ~~ m{()}; 13:58
camelia rakudo-moar d9e307: OUTPUT«5===SORRY!5=== Error while compiling /tmp/VUxsZTEF1F␤Null regex not allowed␤at /tmp/VUxsZTEF1F:1␤------> 3"abc" ~~ m{(7⏏5)};␤»
13:58 AlexDani` left
jnthn So putting it together, submethod BUILD(IO() :$!dir) { } 13:59
BooK not sure I understand what that means 14:00
also, I have two such attributes and one of them is optional
hoelzro moritz: it does indeed need a C compiler
14:00 vendethiel left
hoelzro I haven't tried it on Windows, but I recently updated the included linenoise.c file to use MoarVM/linenoise, which has Windows patches 14:01
14:01 CIAvash left
BooK jnthn: basically signatures are so powerful you don't need any code :-) 14:02
moritz hoelzro: it should be tested on windows before we add it to star
hoelzro moritz: works for me
"A successful match always returns a C<Match> object, which is generally also put into C<$/>..." is there a context in which $/ is *not* populated by a regex match? 14:08
BooK how do I actually load IO::Path, so that I can do things like IO::Path.new( "foo" ) ? 14:09
moritz BooK: it's already loaded
14:09 vendethiel joined
moritz m: sub f($/) { say $/ }; say f "foo" 14:09
camelia rakudo-moar d9e307: OUTPUT«foo␤True␤»
moritz hoelzro: ^^
or the other way round
m: grammar A { token TOP { .* } }; A.parse('foo'); say $/ 14:10
camelia rakudo-moar d9e307: OUTPUT«「foo」␤»
moritz huh
14:11 yqt left, colomon joined 14:13 JimmyZ_ joined 14:21 brrt left
timotimo did some errands in the city and had a piece of watermelon, too 14:22
hoelzro m: my $s = 'the quick fox jumped over the lazy dog'; my $m = $s ~~ m:s/$<one>=[\w+] $<two>=[\w+] $<three>=[\w+]/; say ( :one($<one>.Str), :three(do { ($m<three> ~~ /'fox' || 'dog'/).Bool }), :two($<two>.Str),).hash; 14:26
camelia rakudo-moar d9e307: OUTPUT«Use of Nil in string context in block <unit> at /tmp/d1cCnrK4i2:1␤one => the, three => True, two => ␤»
hoelzro ^^ shouldn't the do block above get its own $/ variable? 14:27
jnthn $/ is per routine
YOu can declare your own $/
hoelzro ah, ok
masak <BooK> jnthn: basically signatures are so powerful you don't need any code :-)
BooK: in 2024, we'll be able to auto-generate signatures, thus eliminating programming altogether :P
moritz masak: oh, you still write your signatures by hand? 14:28
:-) 14:29
masak lovingly hand-crafter, yessir
crafted*
hoelzro m: my $x = 1; do { my $x = $x; say $x }
camelia rakudo-moar d9e307: OUTPUT«(Any)␤»
14:29 Guest57881 left
hoelzro ^ should the RHS of the inner my be able to consult the outer $x? 14:30
masak most certainly not
jnthn OUTER::<$x>
masak after the `my $x`, a new $x is visible in the scope.
shadowing the old one.
14:30 noganex left 14:32 noganex joined
hoelzro ok, got it 14:32
timotimo m: my $x = 1; do { say $x; my $x = 5; say $x } 14:33
camelia rakudo-moar d9e307: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Qm2AVx2HOE␤Lexical symbol '$x' is already bound to an outer symbol;␤the implicit outer binding must be rewritten as OUTER::<$x>␤before you can unambiguously declare a new '$x' in this scope␤at /tmp/Qm2A…»
timotimo "after the my $x", but also before it :)
14:35 mr-foobar left
moritz this allows one to write recursion into anonymous subs more easily 14:39
m: my $f = sub ($x) { $x == 0 ?? 1 !! $x * $f($x - 1) }; say $f(4)
camelia rakudo-moar d9e307: OUTPUT«24␤»
moritz you can't do that in p5 14:40
jnthn m: my $f = anon sub fac($x) { $x == 0 ?? 1 !! $x * fac($x - 1) }; say $f(4)
camelia rakudo-moar d9e307: OUTPUT«5===SORRY!5=== Error while compiling /tmp/7mSxdS4Ic7␤Undeclared routine:␤ fac used at line 1␤␤»
jnthn aww, thought you could do that...
14:41 lucasb joined
moritz m: my $f = anon sub fac($x) { $x == 0 ?? 1 !! $x * &::ROUTINE($x - 1) }; say $f(5) 14:44
camelia rakudo-moar d9e307: OUTPUT«5===SORRY!5=== Error while compiling /tmp/AkBBzzqLap␤Undeclared routine:␤ &ROUTINE used at line 1␤␤»
moritz m: my $f = anon sub fac($x) { $x == 0 ?? 1 !! $x * &?ROUTINE($x - 1) }; say $f(5)
camelia rakudo-moar d9e307: OUTPUT«120␤»
14:46 VinceDee joined
timotimo hm, we can't do a levenshtein to find $? variables yet? 14:51
because they only get installed as soon as you mention them, perhaps?
LWP::Simple has a Sub isa_ok (from Test) seen at: 14:52
t/parse-url.t, line 48
14:54 vendethiel left
lucasb Hello. Does it makes sense to say "given @a" or "given %h"? Will it bind the array/hash into $_ inside the block? 14:55
14:56 marchelzo_ joined
timotimo m: sub foobar(num $foo = 0e0) { } 14:56
camelia rakudo-moar d9e307: OUTPUT«5===SORRY!5=== Error while compiling /tmp/i90XTHojDs␤Default value '0' will never bind to a parameter of type num␤at /tmp/i90XTHojDs:1␤------> 3sub foobar(num $foo = 0e07⏏5) { }␤ expecting any of:␤ constraint␤»
timotimo lucasb: that's right
lucasb m: my @a = 1,2,3; given @a { .perl.say }
camelia rakudo-moar d9e307: OUTPUT«[1, 2, 3]<>␤»
lucasb m: my @a = 1,2,3; given @a { $_ = 42 }
camelia rakudo-moar d9e307: OUTPUT«Cannot assign to an immutable value␤ in block <unit> at /tmp/99RfBY9ulI:1␤␤»
timotimo hm, given probably doesn't set $_ to rw? 14:57
lucasb ^^ Any reason I can't assign to them?
dalek c: 0caf9d5 | RabidGravy++ | lib/Type/IO/Socket/Async.pod:
Add documentation for IO::Socket::Async
c: 319ddfb | RabidGravy++ | lib/Type/IO/Socket/Async.pod:
Merge branch 'io-socket-async'
masak m: my @a = 1, 2, 3; for @a { $_ = 42 }; say @a
camelia rakudo-moar d9e307: OUTPUT«42 42 42␤»
masak lucasb: you can, if you use `for` 14:58
m: my @a = 1, 2, 3; given @a[1] <-> $_ { $_ = 42 }; say @a
camelia rakudo-moar d9e307: OUTPUT«1 42 3␤»
masak m: my @a = 1, 2, 3; given @a[1] { $_ = 42 }; say @a
camelia rakudo-moar d9e307: OUTPUT«1 42 3␤»
timotimo m: nqp::istype(0e0, num)
camelia rakudo-moar d9e307: OUTPUT«===============================================================================␤The use of nqp::operations has been deprecated for non-CORE code. Please␤change your code to not use these non-portable functions. If you really want␤to keep using nqp:…»
timotimo m: use nqp; nqp::istype(0e0, num)
camelia ( no output )
timotimo m: use nqp; say nqp::istype(0e0, num)
camelia rakudo-moar d9e307: OUTPUT«0␤»
masak lucasb: or if you do `given` on a single element of the list.
timotimo that'd be the reason.
RabidGravy someone might want to make better examples for that as I struggled to make a sensible client 14:59
timotimo m: say nqp::objprimspec(my num $foo)
camelia rakudo-moar d9e307: OUTPUT«===============================================================================␤The use of nqp::operations has been deprecated for non-CORE code. Please␤change your code to not use these non-portable functions. If you really want␤to keep using nqp:…»
timotimo m: use nqp; say nqp::objprimspec(my num $foo)
camelia rakudo-moar d9e307: OUTPUT«0␤»
timotimo m: use nqp; say nqp::objprimspec(num)
camelia rakudo-moar d9e307: OUTPUT«2␤»
timotimo m: use nqp; say nqp::objprimspec(nqp::decont(my num $foo))
camelia rakudo-moar d9e307: OUTPUT«0␤»
timotimo m: use nqp; say nqp::objprimspec(Str) 15:00
camelia rakudo-moar d9e307: OUTPUT«0␤»
timotimo ok
lucasb I was trying to assign a new array as a whole, not an individual element
more like "given @a <-> $_"
dalek kudo/nom: 9b4463d | timotimo++ | src/Perl6/Actions.nqp:
work around X::Parameter::Default::TypeCheck not understanding native parameters
lucasb but maybe it doesn't work, that's ok
timotimo ^- should i file a bug & build a test for this? 15:01
hoelzro === is object identity equivalence, and eqv is structural equivalence, right?
timotimo i think so, yeah 15:02
and =:= is container equivalence
er ... container identity check
15:02 marchelzo_ left
hoelzro alright, thanks for the sanity check! 15:02
15:02 rurban joined 15:04 sivoais left 15:09 diana_olhovik left 15:11 telex left 15:12 telex joined, amurf joined, sivoais joined 15:17 amurf left
ugexe i think i see the jvm shell/run exitcode bug. now i uh... just have to learn java 15:17
jnthn There's not very much Java to learn... 15:18
ugexe that what it looks like, but you shouldnt overestimate my abilities either heh 15:19
RabidGravy :) 15:20
15:32 nnms joined, zakharyas left
nnms добрый день, у меня есть список названий тегов, как лучше и изящнее сопроставить их с существующими тегами в документе, по классике пользоваться модулями нет желания 15:34
15:35 tinyblak left
nine nnms: Good afternoon, could you repeat your question in English? I'm not sure anyone on the channel speaks Russian. 15:40
timotimo google translate does not help :( 15:43
RabidGravy (and even google translate doesn't help much)
timotimo nnms: is this a question about perl5 or perl6? 15:44
15:44 _mg_ left
itz yeah I lost it at "sleeker soprostavit their existing tags" 15:44
nnms perl6
Sorry
Good afternoon, I have a list of tag names as better and sleeker soprostavit their existing tags in the document, use the modules on the classics is no desire
nine That's what Google translate produces :)
hoelzro soprostavit = juxtapose, I believe 15:45
nnms *
matching
hoelzro heh
thanks, Yandex!</sarcasm>
nnms :)
sub htmp(@html){ 15:46
my @tags = <article aside command datalist details figcaption figure footer header hgroup keygen main mark menu meter nav output progress rp rt ruby section source summary time video wbr>;
for @tags -> $cur {
if $cur in @html {
$cur.say;
};
}
}
colomon in? 15:47
hoelzro you have a list of tags, and you want to know how to intelligently match them with existing tags in a document?
virtualsue time for pastebin
nnms my $novitates = open 'ind.html';
my @shabl = $novitates.lines;
htmp(@shabl);
hoelzro and something about not wishing to use classic modules?
this is a reoccurring pattern with Russian and me; I'll understand 80% of the words by themselves, but not the sentence =/ 15:48
nine Well the code is pretty clear I'd say. Seems like what's wanted is a grep for HTML tags.
ugexe possibly a transliteration 15:49
nnms No, i dont need classic module, Unlearning my python programming :)
hoelzro nnms: "по классике пользоваться модулями нет желания" is the bit I don't understand =)
15:49 khw joined
hoelzro "нет желания" I get (I think) 15:50
nnms yes
TimToady that would be a great book title: "Unlearning Python"
nnms :)
hoelzro maybe I'm misunderstanding the usage of по here?
regarding the actual problem, instead of my problems with the Russian language, you could probably do $cur eq any(@tags) 15:51
15:51 PhilH joined
tony-o m: dd 15:52
camelia ( no output )
nnms in PL/pgSQL have EXCEPT, her return difference for any query 15:53
tony-o m: dd (1,2,3)
camelia rakudo-moar 9b4463: OUTPUT«(1, 2, 3)␤»
15:53 PhilH is now known as phdphil
TimToady my $html = set(@html); for @tags -> $cur { $cur.say if $cur (elem) $html) } 15:53
we have set difference too 15:54
ShimmerFairy I think maybe say $_ for @html.grep(any(@tags)); would also do the trick?
tony-o m: $_.say for (1..5).grep(any(1,2)) 15:55
camelia rakudo-moar 9b4463: OUTPUT«1␤2␤»
phdphil Stupid question time: Given a string, how do I get a list of the characters in the string, or something I can iterate over/map with? 'abcde'.chars gives me a char count, which is pleasant... 15:56
TimToady .comb
nnms and that difference written to %hash tag_key: html_name
ugexe all($cur.words) ~~ any(@tags) if you are feeling frisky 15:57
tony-o m: $_.say for (a=>'b',c=>'d').keys.grep(any('a','e'))
camelia ( no output )
nnms Thank you Ж) 15:58
:)
RabidGravy phdphil, split will work too: 16:02
m: for "abcd".split("") { .say }
camelia rakudo-moar 9b4463: OUTPUT«a␤b␤c␤d␤»
16:03 molaf joined, spider-mario joined
timotimo better to use .comb() 16:04
RabidGravy oh yeah for sure, fewer characters to mistype for one :) 16:06
timotimo and it has the right default value for its parameter
RabidGravy or (in ant-golf ) 16:08
m: for "abcd".encode.list>>.chr { .say }
camelia rakudo-moar 9b4463: OUTPUT«a␤b␤c␤d␤»
16:10 kanl left
phdphil Cool, thanks 16:10
timotimo what is this, a golf for ants!?
TimToady RabidGravy: that's a bit...ASCII-centric 16:11
16:11 kanl joined
TimToady m: for "°«»ª".encode.list>>.chr { .say } 16:13
camelia rakudo-moar 9b4463: OUTPUT«Â␤°␤Â␤«␤Â␤»␤Â␤ª␤»
TimToady m: for "Â".encode.list>>.chr { .say } 16:14
camelia rakudo-moar 9b4463: OUTPUT«Ã␤␤»
TimToady m: for "Ã".encode.list>>.chr { .say }
camelia rakudo-moar 9b4463: OUTPUT«Ã␤␤»
16:14 mr-foobar joined
hoelzro is DESTROY NYI? 16:14
nine hoelzro: DESTROY is implemented 16:16
TimToady but it's not reliable in the sense that a P5 programmer would expect
hoelzro hmmm...I take it there's no guarantee on when it will run?
nine or even if 16:17
16:17 RabidGravy left
hoelzro nine: the "if" seems to be what I'm observing =) 16:18
16:18 colomon left
hoelzro I figured that DESTROY would run on global VM shutdown, but I take it that's up to the VM? 16:18
16:19 uncleyea1 joined 16:21 uncleyear left 16:22 RabidGravy joined
RabidGravy TimToady, oh ok ;-) 16:22
m: for "ö™¥".encode("UTF-16").list>>.chr { .say }
camelia rakudo-moar 9b4463: OUTPUT«ö␤™␤¥␤»
TimToady a bit BMP-centric :) 16:23
16:23 kaare_ left
timotimo moarvm does not run destroy on shutdown 16:24
16:25 vendethiel joined
TimToady m: for "🐼".encode("UTF-16").list>>.chr { .say } 16:25
camelia rakudo-moar 9b4463: OUTPUT«Error encoding UTF-8 string: could not encode codepoint 55357␤ in block <unit> at /tmp/Qys4x7DqiX:1␤␤»
TimToady m: for "\c[PANDA FACE]".encode("UTF-16").list>>.chr { .say } 16:26
camelia rakudo-moar 9b4463: OUTPUT«Error encoding UTF-8 string: could not encode codepoint 55357␤ in block <unit> at /tmp/Ko3SEHFLZX:1␤␤»
TimToady huh
m: say 55357.uniprop 16:27
camelia rakudo-moar 9b4463: OUTPUT«Cs␤»
TimToady m: say 55357.uniname
camelia rakudo-moar 9b4463: OUTPUT«<Non Private Use High Surrogate>␤»
TimToady ah
of course
TimToady obviously needs a 3rd cuppa
m: for "\c[PANDA FACE]".encode("UTF-32").list>>.chr { .say } 16:28
camelia rakudo-moar 9b4463: OUTPUT«Unknown string encoding: 'utf32'␤ in block <unit> at /tmp/_n1PVojWTQ:1␤␤»
TimToady that's probably some LHF 16:29
16:29 colomon joined 16:32 lucasb left 16:34 lucasb joined 16:35 virtualsue left, tinyblak joined 16:36 jack_rabbit joined 16:41 colomon left
b2gills m: for 0, 0e0, 'a', 'a' { say $^a cmp $^b ~~ Same } # is there an operator for this? 16:41
camelia rakudo-moar 9b4463: OUTPUT«True␤True␤»
b2gills m: for 0, 0e0, 'a', 'a' { say $^a eqv $^b }
camelia rakudo-moar 9b4463: OUTPUT«False␤True␤»
16:42 tinyblak left
lucasb since there is "before" and "after", there could exist also a "same" :) 16:44
ugexe m: for 0, 0e0, 'a', 'a' { say $^a cmp $^b } 16:45
camelia rakudo-moar 9b4463: OUTPUT«Same␤Same␤»
ugexe m: for 0, 1e0, 'a', 'a' { say $^a cmp $^b }
camelia rakudo-moar 9b4463: OUTPUT«Less␤Same␤»
16:45 rurban left 16:47 dakkar left
lucasb m: say (1 cmp 2, 'is', 4 cmp 3) 16:48
camelia rakudo-moar 9b4463: OUTPUT«Less is More␤»
16:49 colomon joined
ShimmerFairy m: for 0, 0e0, 'a', 'a' { say $^a ~~ $^b } 16:49
camelia rakudo-moar 9b4463: OUTPUT«True␤True␤»
ShimmerFairy What about smartmatch?
16:50 jack_rabbit left
TimToady not symmetrical, if that's desired 16:50
16:50 Woodi left
TimToady m: .say for "00" ~~ 0, 0 ~~ "00" 16:50
camelia rakudo-moar 9b4463: OUTPUT«True␤False␤»
16:51 domidumont1 left
TimToady m: .say for "00" cmp 0, 0 cmp "00" 16:51
camelia rakudo-moar 9b4463: OUTPUT«More␤Less␤»
TimToady well, cmp between different types has never beed adequately nailed down, due to contradictory expectations 16:52
*been
ShimmerFairy cmp has always been interesting to me. I've never used it, except I think for C strings, where that's the only thing you have for testing string equality. 16:54
16:54 beastd joined 16:57 jack_rabbit joined
TimToady leg doesn't work? 17:01
ShimmerFairy TimToady: I mean in C/C++ land, sorry if that wasn't clear.
TimToady speaking of clear, we should rename undefine 17:02
since it doesn't always
nine Is 3 spec test files failing on current nom/moarvm to be expected?
TimToady I only got one failure 17:03
nine t/spec/S01-perl-5-integration/exception_handling.t t/spec/S17-lowlevel/lock.rakudo.moar and t/spec/S24-testing/line-numbers.t[3~
TimToady after a reconfig, I only fail line-numbers
lucasb Can I haz @a.clear and %h.clear ?
itz I was seeing t/spec/S32-io/IO-Socket-INET.t and t/spec/S32-io/IO-Socket-INET.t fail and was rebuilding 17:04
TimToady lucasb: why not?
ShimmerFairy isn't that just @a = Nil and so on? Or am I misremembering or unaware of recent changes?
17:04 diana_olhovik_ joined
lucasb :) 17:04
nine TimToady: I guess you don't have Inline::Perl5 installed?
TimToady nope
prolly otta 17:05
nine Then maybe t/spec/S01-perl-5-integration/exception_handling.t would fail for you, too leaving only t/spec/S17-lowlevel/lock.rakudo.moar which curiously passes when I run it single
TimToady and lock is a flapper anyway
itz errr and t/spec/S24-testing/line-numbers.t I mea 17:06
n
17:06 JimmyZ_ left 17:07 kanl left
lucasb ShimmerFairy: yes, you are right. but now I think one should use Empty instead of Nil 17:07
but it always felt strange to me, because it seems to be overloading to assignment operator with an operation that is exactly the opposite of assignment: disassignment, or clearing its content 17:08
17:08 colomon left, kanl joined
lucasb *to be overloading the assignment 17:09
17:09 mj41 joined, nys left
TimToady currently we have: 17:09
./src/core/operators.pm:multi sub undefine(Mu \x) is rw { x = Nil }
./src/core/operators.pm:multi sub undefine(Array \x) is rw { x = Empty }
./src/core/operators.pm:multi sub undefine(Hash \x) is rw { x = Empty }
17:10 vendethiel left, geekosaur left
mj41 hoelzro: Hi, why 2015.05 registry.hub.docker.com/_/rakudo-s...gs/manage/ ? Newest rakudo * is 2015.06 :-). 17:11
17:11 geekosaur joined
hoelzro mj41: that's...a really question 17:11
hoelzro looks
ah, I labelled it wrong. =( 17:12
mj41: good catch, just opened to PR to fix it 17:13
mj41 hoelzro: super, thx 17:14
nine .tell lizmat github.com/rakudo/rakudo/pull/457 fixes use lib:from<Perl5> and spectests fine. 17:15
yoleaux nine: I'll pass your message to lizmat.
lucasb Anyway, my wish was that the operation "clear its content" was a method on the objects, such that [1,2,3].clear and {:a=>1,:b=>2}.clear would work. But I agree I don't understand all the details.
17:19 ShimmerFairy left
TimToady well, regardless of how it's implemented, I think we should s/undefine/clear/, because clarity 17:19
flussence I'd imagine $var.=WHAT would've done the same thing, but it's an error
17:20 colomon joined
TimToady that doesn't work to reset to default 17:20
if the default isn't WHAT, assuming WHAT worked, which it doesn't, because it's not a real method
flussence I guess having a .clear makes sense then 17:21
17:24 domidumont joined 17:25 kaare_ joined 17:26 uncleyea1 is now known as uncleyear, uncleyear left, uncleyear joined 17:32 ShimmerFairy joined 17:33 beastd left 17:34 freeze joined 17:37 vendethiel joined 17:40 _mg_ joined 17:42 molaf_ joined
b2gills What idiot came up with SVGCaptcha what.thedailywtf.com/t/svgcaptcha/49747/77 svgcaptcha.com/ 17:43
17:44 SevenWolf joined
tony-o b2gills: lol 17:45
17:45 espadrine left, molaf left
gfldex b2gills: him: bitbucket.org/scriptoid 17:46
17:47 SevenWolf left 17:48 brrt joined 17:50 rurban joined, rurban left, mj41 left
tony-o b2gills: the hamburger discussion is the most interesting part of that whole thread 17:51
b2gills Yes. ... Yes it is. 17:53
ugexe a government portal i use uses a captcha that is just 'type the following number: XXXXXX', where the number is literally in the html 17:54
17:54 jack_rabbit left
tony-o thanks obama 17:54
17:55 bin_005 joined 17:58 rurban joined, rurban left, _mg_ left 17:59 rurban joined
TimToady m: my @a = 1,2,3; given @a -> $_ is rw { $_ = 42 }; say @a 18:00
camelia rakudo-moar 9b4463: OUTPUT«Cannot assign to an immutable value␤ in block <unit> at /tmp/LkfsDUMPJJ:1␤␤»
TimToady that looks kinda sorta like a bug, maybe 18:01
18:02 rindolf left
tony-o m: my @a = 1,2,3; given @a <-> $_ { $_ = 42; }; say @a; 18:02
camelia rakudo-moar 9b4463: OUTPUT«Cannot assign to an immutable value␤ in block <unit> at /tmp/fV2xa06_Rw:1␤␤»
nine ugexe: for a small website, this could actually work. Obscurity can really help
18:02 diana_olhovik_ left
TimToady m: my @a = 1,2,3; given @a -> @x is rw { @x = 42 }; say @a 18:03
camelia rakudo-moar 9b4463: OUTPUT«42␤»
TimToady it works with an @ sigil
m: my @a = 1,2,3; given @a -> $_ is rw { @$_ = 42 }; say @a 18:04
camelia rakudo-moar 9b4463: OUTPUT«42␤»
TimToady that works too 18:05
18:05 domidumont left
TimToady I'm guessing assignment isn't delegating through the container, or some such 18:05
I'm not sure if that should actually dwim or not 18:06
assignment to a scalar vs assignment to an array is a rather fundamental distinction, down underneath 18:07
m: my @a = 1,2,3; given @a { @$_ = 42 }; say @a
camelia rakudo-moar 9b4463: OUTPUT«42␤»
TimToady and we don't enforce the readonly there, with the @$_ 18:08
jnthn TimToady: We case-analyze by sigil. 18:11
TimToady: And emit assignment code differently. For unsigilled cases we emit a runtime check.
TimToady: Since this is the first time that "cheat" got caught...I'm not too inclined to lose it ;) 18:12
tony-o m: my @a = 1,2,3; for @a <-> $_ { $_ = 42; }; say @a; 18:13
camelia rakudo-moar 9b4463: OUTPUT«42 42 42␤»
b2gills m: sub test ( *%_ ){ say %_ }; my %a = a => 0; test |%a, a => 1 # the |% always overwrites everything else 18:15
camelia rakudo-moar 9b4463: OUTPUT«a => 0␤»
lucasb m: sub f(*%_) { say %_ }; my %a = a=>1; f(|%a, a=>2, b=>3) 18:17
camelia rakudo-moar 9b4463: OUTPUT«a => 1, b => 3␤»
18:20 raiph joined
masak FROGGS++ # star 18:22
as we pass Christmas, will we stop advertising Rakudo Star as an "early adopter" distribution of Perl 6? 18:23
vendethiel FROGGS++ # star
masak also, in the release announcement, I think "Synopsis 9 and 11" should be "Synopses 9 and 11" :P 18:24
TimToady obviously, it will then become a late adopter distribution :) 18:25
masak "late-to-the-party adopter" distribution :)
18:26 molaf_ left, colomon left 18:30 brrt left 18:38 Ven joined, domidumont joined 18:39 rurban left 18:50 diana_olhovik_ joined, amurf joined
hoelzro I was working on a NativeCall binding for Xapian, so I decided to chronicle the experience in screencast form for people to learn from: www.youtube.com/watch?v=kY9gfEn8T7I 18:52
18:52 yqt joined 18:55 amurf left 18:57 brrt joined, xfix joined, xfix left, xfix joined 19:23 cognominal joined 19:25 jack_rabbit joined
Ulti nice video hoelzro++ 19:26
19:27 gtodd joined 19:30 Peter_R joined
gtodd hopefully the p6doc server's design will have lots of those "affordances" everyone talked about a few years back 19:30
19:31 jack_rabbit left
gtodd so that it can accidentally become a killer app ... 19:31
that everyone must have for their digital $THINGS ... p6doc-serve all the things! 19:34
19:34 [Sno] left, noganex_ joined, [Sno] joined 19:35 noganex left 19:36 domidumont left 19:37 Ven left 19:44 cognominal left, ShimmerFairy left
itz_ another solution would be to use a faster serialisation solution than EVAL .. I believe there was talk of panda using one 19:48
DrForr Just a note for site authors - doc.perl6.org/type/Quoting%20Constructs doesn't exist (referenced from doc.perl6.org/language/terms 19:49
19:49 ab6tract joined
DrForr s/$/)/ 19:49
b2gills Is it a known problem that trying to print to an instance of Proc::Async stops the REPL? ( I would guess it closes STDIN )
19:51 nys joined 19:55 brrt left
timotimo yo hoelzro check this out for your audio track: auphonic.com/ 19:57
19:57 ShimmerFairy joined
ab6tract o/ #perl6 19:59
I hope everyone is having a nice summer :) 20:00
m: class ε {}; role Greater[$n] { method near { $n }}; multi infix:«<»(Numeric:D $a, Greater $b) { $a == $b.near ?? True !! $a < $b.near }; multi infix:<+>(Numeric:D $n, ε:U $) { Greater[$n] }; say 5 < 5 + ε; say 5.00000001 < 5 + ε; # very cool example from Mouq
camelia rakudo-moar 9b4463: OUTPUT«True␤False␤»
timotimo i'm having a hot summer at the moment :)
nine DrForr: github.com/rakudo/rakudo/pull/457
ab6tract timotimo: Likewise :)
DrForr Ooo. /me looks in a moment. 20:01
ab6tract moritz: I'm returning to the topic of 'overlaps-with' . I'm currently implementing it as an object method.
Is that a sufficient way for handling the excludes-* infinima? 20:02
It seems like it might be a bit heavy for core 20:03
20:03 lucasb left
ab6tract hmm, and it has at least one small issue 20:04
20:06 colomon joined
flussence ooc: is the levenshtein sub in core accessible by user code? 20:06
DrForr Added my 2c to the matter. 20:07
20:13 zakharyas joined
timotimo it's not in the core setting, flussence 20:15
i don't think it's available to user code
20:17 darutoko left
flussence IWBNif there were a "use rakudo" for that and any other internal-but-generically-useful things, like there's a "use nqp" for low-level stuff. The internal json stuff could go behind that too, then. 20:19
ab6tract are WhateverCodes too heavy for core settings? 20:20
20:20 jack_rabbit joined
timotimo no, but WhateverCode is defined relatively late, isn't it? 20:22
oh, huh
tony-o timotimo: 114f here yesterday
timotimo at about like 4k
tony-o: i don't speak imperial
tony-o 45.5c
flussence m: say (114 - 32) * 9/5 20:23
camelia rakudo-moar 9b4463: OUTPUT«147.6␤»
flussence wait...
m: say (114 - 32) * 5/9
camelia rakudo-moar 9b4463: OUTPUT«45.555556␤»
flussence that's the one
...and wow
tony-o had a couple 44c days last week
timotimo oh lord, 45 degrees
we have between 35 and 40 here
that's already terrible enough 20:24
don't want to imagine what 45 feels like
flussence it's only been in the 20s here, and I find *that* uncomfortable :(
tony-o 35 days feel good here now, after the 44-45
flussence: that used to be me too, when i lived somewhere that people knew what snow was 20:25
when it's 20s here people have the big puffy coats on 20:26
RabidGravy I like low to mid-30s but not in London 20:31
20:32 bin_005 left, bin_005 joined
RabidGravy Rarely gets that hot here without getting humid 20:33
hoelzro timotimo: ah, thanks
I did what I could to take off some of the noise =/ 20:34
but my Audacity skills are not very good
20:34 skids left 20:35 AlexDani` joined
dalek kudo/nom: 19526f1 | (Stefan Seifert)++ | src/core/CompUnitRepo.pm:
Obey use :from even when a similar named Perl 6 module is installed in a CUR

There's no need to even look for a Perl 6 module in CompUnitRepo when there's a :from adverb present. So don't do that and let the Perl6ModuleLoader handle the case straight away.
Fixes for example use lib:from<Perl5>
20:38
kudo/nom: a25b55a | lizmat++ | src/core/CompUnitRepo.pm:
Merge pull request #457 from niner/nom

Obey use :from even when a similar named Perl 6 module is installed i…
20:41 tinyblak joined 20:42 xfix left
dalek kudo/nom: 9e4f8bd | (Nick Logan)++ | src/core/CompUnit.pm:
bugfix: `.precomp` returning Failure erroneously

On JVM the pipe must be closed after reading but before the status is checked for `.precomp` to return a true value.
side note: It would seem `process.waitFor()` does not close the channel, as if it never finishes reading the buffer.
20:42
kudo/nom: c93ba94 | lizmat++ | src/core/CompUnit.pm:
Merge pull request #458 from ugexe/patch-6

bugfix: `.precomp` returning Failure erroneously
20:43 xaduha joined 20:45 tinyblak left
timotimo thank you, ugexe 20:47
20:48 itz left
timotimo hoelzro: i have a pretty nice microphone available, but i'm sort of too shy to put my voice (and especially the accent) on the 'net 20:48
hoelzro: also i'm not sure what i'd screencast about
hoelzro timotimo: I think you could screencast about a lot! 20:49
timotimo alot is a great topic :)
hoelzro anything that helps people learn Perl 6 would likely help
I don't think I have a particularly good screencasting voice; I kinda mumble a lot =/
timotimo right, i've considered a tutorial series starting from knowing very little about p6 to ... whatever
mumble? i didn't notice that
hoelzro I had to record a few times to get it right =P 20:51
timotimo: I was thinking the same thing - I decided to just start recording things I'm working on 20:52
next up will be parsing Xapian class definitions to auto-generate the code I wrote in that video
timotimo mhm :)
jnthn has considered doing screencasts sometimes, but has so much to do already... ;)
hoelzro jnthn: I think that would be great, but you have a lot of things on your plate
leave it to the mortals =P 20:53
RabidGravy I've been nagged to do a show for the radio station I work with for a year and a half, but it wouldn't be about programming
hoelzro I really want to help make good learning materials
RabidGravy: maybe you could lend your voice then =)
tony-o what are the tutorials on angularjs on? those were a pretty cool way to teach folks 20:54
hoelzro tony-o: good idea; I think that that crowd had a pretty good handle on tutorials for people 20:55
tony-o the platform was cool, but the way the tutorial guided you through "here is a problem, here are the tools you need to solve it, try it out" was well thought out i think 20:58
20:58 khw left
tony-o i think angular's example was setting up an online heroin store or something 20:58
perl would be a little more difficult because its not just a web framework designed to make trmplating (or whatever) easy, but that development flow could work the same 20:59
just need a wider variety of problems to solve 21:00
ab6tract tony-o: an online camel marketplace?
21:02 rurban joined
ab6tract but more seriously, I've been imagining an 'interactive-fiction-inside-and-about-the-repl' 21:02
21:02 kaare_ left
timotimo i'd love to figure out what in CALL-ME of NativeCall is allocating Scalar objects 21:05
it's using := almost everywhere
masak ab6tract: that's a new form of metacircularity :)
21:06 jack_rabbit left 21:08 bin_005 left 21:09 bin_005 joined, telex left 21:10 telex joined
lizmat ShimmerFairy: re irclog.perlgeek.de/perl6/2015-07-02#i_10838803 , it's because the .WHICH of [2,3] and [2,3] are not the same 21:10
yoleaux 17:15Z <nine> lizmat: github.com/rakudo/rakudo/pull/457 fixes use lib:from<Perl5> and spectests fine.
lizmat m: say [2,3].WHICH; say [2.3].WHICH
camelia rakudo-moar 9b4463: OUTPUT«Array|60893496␤Array|60893568␤»
lizmat if you make it parcels, it does DWIM: 21:11
m: my @a = $(1,2),$(2,3); my @b = $(2,3),$(3,4); say (@a (&) @b).perl
camelia rakudo-moar 9b4463: OUTPUT«set($(2, 3))␤»
21:17 ab6tract left
hoelzro m: my $method = 'do-stuff'; say q:scalar"say $method()" 21:18
camelia rakudo-moar 9b4463: OUTPUT«Cannot find method 'postcircumfix:<( )>'␤ in block <unit> at /tmp/qALVtUldbP:1␤␤»
21:18 zakharyas left
hoelzro ^ does :scalar activate method call interpolation as well as just plain ol' scalar interpolation? 21:18
jnthn yeah
There's no adverb that controls the postcircumfix interpolation...
hoelzro =( 21:19
jnthn In part 'cus that's parsed back in the main language 21:20
And the adverbs control the quote language's ability to delegate to the main language.
well, decision rather than ability 21:21
21:21 Sqirrel left, Sqirrel joined 21:22 ab6tract joined
ab6tract masak: I'm always on the lookout for another metalevel ;) 21:23
vendethiel *g*
ab6tract has there ever been consideration for the inclusion of Epsilon in core setting? 21:25
we have sort of introduced it in ad absentia, via 5^..^6 21:30
masak I'm not sure Epsilon is... a thing
lizmat lucasb: re irclog.perlgeek.de/perl6/2015-07-02#i_10840839 , you can haz 'undefine @a' 21:31
which is "short" for @a = Empty (at least at the moment, not sure why it is Empty rather than () really) 21:32
oops, it already got answered... it's too hot... 21:33
timotimo i have a "benchmark" that i've built as a very rough approximation of what i can do with an idea i have ... and i can get it to about 6 FPS and it doesn't even contain the computation for what i want to do with it >_> 21:35
top three methods by exclusive time are bind_one_param, bind and find_best_dispatchee
21:37 xaduha left
lizmat TimToady: re irclog.perlgeek.de/perl6/2015-07-02#i_10840951 s/undefine/clear/, shouldn't that be .CLEAR and CLEAR to make collisions with ecosystem code less likely? 21:37
timotimo after that comes roll, because i'm currently generating random data all the time ... taking that out makes it a whole lot faster
removing the calls to roll give me a much, much better FPS 21:38
lizmat you're rolling on a List ?
timotimo a Range in this case 21:39
(^255).pick
lizmat ^255?? not ^256 ?
timotimo er, yeah 21:40
but that doesn't matter :)
lizmat and you only pick one?
timotimo oh wow 21:41
lizmat then you're better off doing .roll
timotimo moving the ^256 into a variable on its own and just calling .pick over and over gives 2x the performance
lizmat as Range.pick just refers to Range.roll
yup, building a Range object is expensive
timotimo i was expecting that to be done at optimizer time
lizmat are you picking one? then use .roll 21:42
timotimo curiously .pick seems to be faster :P
i'm at 21fps now :) 21:43
ab6tract masak: Is it not possible to do have sometging like 5 < 5 + AbstractInfinumMarker.new < 5.001 ?
21:44 rurban left
timotimo now i've put in access to the array that's going to hold my data and it's at 3 seconds per frame 21:44
masak ab6tract: oh, I think you'd be able to design and implement a number class that worked like that, in module space.
ab6tract or better yet, just the type, without instantiation.. AbstractInfinumMarkerType ;P
lizmat timotimo: use nqp; say nqp::rand_I(nqp::decont(256), Int) 21:45
masak ab6tract: I'm not as sure that I see a fantastic use case for it.
timotimo ouch. the performance difference between @a[$x;$y] and @a[$x][$y] is *staggering*
masak ab6tract: you're basically proposing introducing nonstandard analysis into Perl 6 :)
lizmat yeah, I'm not surprised
ab6tract masak: more or less :) 21:46
masak yeah.
I prefer IEEE 754 :)
lizmat TimToady: re undefine/clear I'm not sure we need either, now that we have Nil / Empty 21:48
ab6tract But really, it does feel weird to me that $range.min returns something that you can't effectively use in a numeric comparison
and it makes implementing 'overlaps-with' a brain twister, to say the least :)
I also note that .pick and .roll bothe use: my $least = $!excludes-min ?? 1+ $!min !! $!min; 21:49
lizmat ab6tract: fwiw, I tihink Range has too much functionality overloaded onto it 21:50
that's why I once started work on a RangeInt class
ab6tract I can agree with that
lizmat but that was considered to be a bad idea
:-(
ab6tract I can see that point as well :) 21:52
21:52 spider-mario left 21:54 ab6tract_ joined
timotimo Type check failed in binding <anon>; expected 'Any' but got 'Int' 21:56
how did i even ...
21:56 ab6tract left
masak m: say Int ~~ Any 21:56
camelia rakudo-moar c93ba9: OUTPUT«True␤»
ab6tract_ If I can get (6^..7).overlaps-with(6) to return False, I will be well-pleased by Range, I think
the rest of it is pretty cool, though I, like timotimo, would sort of expect things like (^256) to be optimized out of the way 21:58
timotimo well, the optimizer can't get away with just using a constant Range object at that point; it'd still have to .clone 21:59
... it's possible that that's actually what it does right now and that still takes somewhat long
lizmat timotimo: ^255 is just Range.new(0,255,:excludes-max) as per "sub prefix:<^>($max) { Range.new(0, $max.Numeric, :excludes-max) } 22:06
so I don't think it is optimized in any way atm? 22:07
22:08 jack_rabbit joined
timotimo there's no "is pure" there? 22:09
lizmat no
should there be?
only infix:<^..^>($min, $max) is pure has it
timotimo it'd make sense to put "is pure" on all of those 22:10
lizmat remind me again what that means exactly ?
(testing is pure on all of them) 22:11
timotimo that the optimizer is free to assume the result of the operator doesn't depend on external factors like IO etc 22:13
lizmat I guess S99:pure
synbot6 Link: design.perl6.org/S99.html#pure
timotimo so it's allowed to run that code at compile time if the arguments are all known
right 22:14
dalek ecs: ace089e | lizmat++ | S99-glossary.pod:
Fix typo
timotimo gist.github.com/timo/5129c1f3de2f793d98b6 ← you can run this if you have SDL2::Raw installed and twiddle with the performance if you want
m: if True 22:15
camelia rakudo-moar c93ba9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/_iq3tlmuhl␤Missing block␤at /tmp/_iq3tlmuhl:1␤------> 3if True7⏏5<EOL>␤ expecting any of:␤ block or pointy block␤»
timotimo m: my $foo; if True { $foo++ if ^5.pick == 1 }
camelia ( no output )
timotimo m: my $foo; if True { $foo++ if ^5.pick == 1 }
camelia ( no output )
timotimo m: my $foo; if True { $foo++ if ^5.pick == 1 }
camelia ( no output )
timotimo m: my $foo; if True { $foo++ if ^100.pick == 1 }; say "test"
camelia rakudo-moar c93ba9: OUTPUT«test␤»
timotimo m: my $foo; if True { $foo++ if ^100.pick == 1 }; say "test"
camelia rakudo-moar c93ba9: OUTPUT«test␤»
timotimo :\
there's a "0;" in that gist; when i removed that, the sink method of Nil threw a bogus binding error 22:16
"Type check failed in binding <anon>; expected 'Any' but got 'Int'"
dalek kudo/nom: a32c1d3 | lizmat++ | src/core/Range.pm:
Make .. ^.. ..^ ^ also "is pure", timotimo++
22:17
22:17 virtualsue joined
lizmat timotimo: feels to me [email@hidden.address] $b + 1, -1));" in a pretty hot code path could be optimisable at this point of rakudo development 22:20
timotimo could be 22:21
i had it as two junctions before that
lizmat especially the first (which returns a lazy list)
I don't have SDL2::Raw installed
so that's is as much feedback I can give you
masak 'night, #perl6 22:22
22:22 bin_005 left
lizmat ah, and maybe precalculating x+1, y+1, y - 1? 22:22
good night, masak
22:23 pdcawley left
lizmat also wishes #perl6 a good night 22:23
timotimo gnite lizmat :)
ah, that precalculation isn't too bad an idea
22:24 jack_rabbit left
timotimo feels a tiny bit faster already ;) 22:26
also not using --profile makes it a bit faster, too
oh, that's nice. CALL-ME from NativeCall is now the top routine in terms of exclusive time 22:27
roll is 4th place with just 6% exclusive time 22:28
ha! 22:29
i got a much faster version now
lizmat m: use nqp; say nqp::rand_I(nqp::decont(256), Int) # timotimo, perhaps better than .roll ?
camelia rakudo-moar c93ba9: OUTPUT«181␤»
jnthn I'm guessing rand(256) does the same? 22:30
timotimo lizmat: i used Inf instead of -1 for the fallback value and now i can use .min instead of .first(...)
jnthn A little administrative update: 6guts.wordpress.com/2015/07/02/gra...us-update/
lizmat m: rand(256) 22:31
camelia rakudo-moar c93ba9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/YQr9InRTVb␤Unsupported use of rand(N); in Perl 6 please use N.rand for Num or (^N).pick for Int result␤at /tmp/YQr9InRTVb:1␤------> 3rand7⏏5(256)␤»
jnthn d'oh
lizmat jnthn: so that would be 256.rand
m: say 256.rand
camelia rakudo-moar c93ba9: OUTPUT«88.373623134515␤»
jnthn Yeah, and you don't get an Int
lizmat yup
jnthn I'd hope we can optimize no-arg (^256).pick pretty well though 22:32
lizmat yeah, to: nqp::rand_I(nqp::decont(256), Int) :-)
timotimo 20% of time now spent in CALL-ME of NativeCall
lizmat really off to bed& 22:33
timotimo i need to find another sponsor for jnthn's grant work %)
jnthn 'night, lizmat 22:35
22:35 RabidGravy left
ab6tract_ hmm... 22:41
m: sub o( $r, $s ) { $r.min ~~ $s or $s.min ~~ $r }; o((0..6), (6^..12)).say; o((12^..^23), (23..44)).say; o((23..44), (42..64)).say;
camelia rakudo-moar c93ba9: OUTPUT«True␤False␤True␤»
ab6tract_ it's late, there's a real chance that I am missing an obvious corner case 22:42
22:42 pochi left, pochi joined
ab6tract_ or... is that a working implementation for 'overlaps-with' ? 22:42
22:43 jack_rabbit joined, ShimmerFairy left, avuserow joined 22:44 ShimmerFairy joined 22:45 erdic left, erdic joined, tinyblak joined 22:46 diana_olhovik_ left, TEttinger joined, Peter_R left
ab6tract_ nope, found at least one problem 22:46
22:47 japhb left 22:49 japhb joined 22:51 tinyblak left 22:53 ShimmerFairy left
timotimo the script i linked to is actually leaking :( 22:55
22:58 vendethiel left 23:00 Sqirrel left 23:01 Alina-malina left
jnthn Time for some rest...should get lots more work in on the multi-dim arrays tomorrow :) 23:01
o/
23:01 Alina-malina joined 23:02 amurf joined 23:04 dha joined, jack_rabbit left 23:05 Sqirrel joined 23:06 ShimmerFairy joined
timotimo hooray! 23:07
having that feature done by the end of the month will greatly impact the script i've got here right now, too
TimToady timotimo: ^100.pick is wrong precedence
unless you meant ^(100.pick) 23:08
which I tend to doubt
dha I note that "item context" is mentioned in the 5to6 doc under "Refrerence Creation", but I don't see where it's explained what item context *is*. 23:11
timotimo i meant to write (^100).pick 23:13
i have that in my code, don't i? 23:14
23:17 virtualsue left
timotimo i kind of wish the profiler could measure how many instances of what class end up dying young and how many end up dying in the old generation and how many stick around until the program ends 23:20
it may be enough to just see how many of each die young
23:21 beastd joined
timotimo but i think the profiler only knows what exact type object got allocated because the type object was available at the exact position the "log this allocation" op was emitted in the first place 23:21
i suppose some sort of tracking could be put in and after every collection, all registered objects could be checked for their status 23:34
ab6tract_ ok, I may have finally cracked the nut 23:47
just in time to get some snooooze
o/ #perl6
dha Question: The docs say that C<//> returns the first defined operand. But that seems to me inaccurate. 23:49
m: say Any // 5
camelia rakudo-moar a32c1d: OUTPUT«5␤»
dha m: say Any // Any
camelia rakudo-moar a32c1d: OUTPUT«(Any)␤»
dha ... in that it's returning the last operand, despite it being undefined.
Is that, in fact, inaccurate, or am I misunderstanding? 23:50
23:50 tinyblak joined 23:52 ab6tract_ left 23:55 tinyblak left
raiph dha: S03:1411 23:58
synbot6 Link: design.perl6.org/S03.html#line_1411
23:58 vendethiel joined
dha Ah. In the operators page in docs.perl6.org, it says differently. will patch. 23:59
Kind of figured that, but wanted to make sure that was the desired semantics before changing the docs.