»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
lucs class Foo { has $n } ; class Bar is Foo { 「new should simply return an instance with $n set to 42」 } # How do I BUILD (I suppose) this? 00:20
timotimo you can call self.Foo::new(:n(42)) if you want 00:22
as in, from Bar's method new
lucs Hmm... 00:23
(trying)
Xliff SrKeys, that gave me a migraine, dammit! 00:25
SrKeys lmao
Xliff I'm not yet up to the changes in map, and deepmap? WTF?
And flat? Are you trying to say something derogatory about certain women?
Shame on you, sir!
SrKeys no i'm just trying to say 'ayy lmao' 00:26
Xliff Well you got me to do that, sir.
Xliff doffs hat.
Of course, my laugh was more pronounced like "Aaaaaieeeee!"
lucs timotimo: Yep, thanks.
Xliff SrKeys, You know... you could always have done "say 'ayy lmao'" -- but where's the fun in that? 00:27
SrKeys exactly
Xliff Hay. It's been a good day. I made an Amen break in Hydrogen. 00:28
Xliff loves the Amen break.
diakopter *BLINK*
TEttinger Xliff: sped up, slowed down, whatever it is it sounds like... a thing 00:40
Xliff TEttinger, I very rythmic thing.
s/I/A/
www.youtube.com/watch?v=qwQLk7NcpO...l=malminho 00:41
timotimo hmm. i wonder how we'd expose OOB message bytes to users of our sockets 00:42
Xliff It's one of those things I've always wanted to replicate in a drum program. But first I needed the right drum program.􏿽xA0Then I needed the right samples.
Xliff Then I needed to program it all. 00:42
Today I accomplished all three.
*yay*
timotimo neat :)
Xliff And who'd have guessed the secret was #perl6? 00:43
TEttinger nice! 00:44
www.youtube.com/watch?v=P9NWXe9mHNY
Xliff Ooh! The warble.
TEttinger lots of good drum sampling in that 00:45
Xliff But oh, the pattern programming!
O_O
TEttinger heh
Xliff throws his hands up and starts bopping his head, instead.
I could not imagine doing this by hand. 00:46
This requires drum pads.
timotimo wow, tcp oob is pretty much uesless :\ 00:59
Xliff timotimo: Wow. Even trying to read about TCP OOB is useless! =) 01:08
timotimo yeah, potentially because nobody cares about it
Xliff Bingo
timotimo all it can really do is tell you up front "there's going to be a single byte of OOB information coming up some time soon!" and where exactly that OOB was inserted in the stream 01:09
Xliff www.gnu.org/software/libc/manual/ht...-Data.html
timotimo i read that, too 01:11
it wasn't terribly helpful
Xliff Well, thank god. I can stop reading, now. 01:12
Man, I just love it when corporations remove useful data from the internet. 01:14
AlexDaniel chrs?? 01:15
Xliff Then I have to hit the Wayback Machine and hope.
web.archive.org/web/20090228185102...03s07.html
AlexDaniel m: say ‘hello world’.chrs
camelia rakudo-moar 72ba5a: OUTPUT«This type cannot unbox to a native integer␤ in block <unit> at /tmp/d7kh4ACv_I line 1␤␤»
AlexDaniel aah
m: say (50, 60, 60).chrs 01:16
camelia rakudo-moar 72ba5a: OUTPUT«2<<␤»
AlexDaniel m: say (Inf).chrs
camelia rakudo-moar 72ba5a: OUTPUT«This type cannot unbox to a native integer␤ in block <unit> at /tmp/SmdxV925rN line 1␤␤»
AlexDaniel m: say (-10).chrs
camelia rakudo-moar 72ba5a: OUTPUT«chr codepoint cannot be negative␤ in block <unit> at /tmp/jHtVndttHo line 1␤␤»
AlexDaniel fine.
m: (999999).chrs.say 01:17
camelia rakudo-moar 72ba5a: OUTPUT«󴈿␤»
AlexDaniel m: [[97, 98], [99, 100, [101, 102, 103]]].chrs.say 01:20
camelia rakudo-moar 72ba5a: OUTPUT«This type cannot unbox to a native integer␤ in block <unit> at /tmp/XJuD72avfe line 1␤␤»
AlexDaniel star: [[97, 98], [99, 100, [101, 102, 103]]].chrs.say
camelia star-m 2016.01: OUTPUT«a bc d e f g␤»
AlexDaniel Hmm… 01:21
BenGoldberg The sole and exclusive use of tcp oob that I know of is within telnet, when you press the break key on your keyboard. 02:01
geekosaur tcp oob isn't really oob, so it's kinda useless for most things you'd want to use oob for 02:02
BenGoldberg It's use in telnet kinda makes sense. Let's suppose you accidentally typed 'cat really_long_file' ... if you typing control-c did nothing more than kill the 'cat' process, you still might end up with many unwanted pages of data scrolling up your terminal. But by using an oob byte (one in each direction), and discarding everything prior to the oob byte, less is displayed and the problem is reduced. 02:09
geekosaur well, yes, as long as you only need to do it once 02:10
BenGoldberg If you send a second oob signal over tcp, the recipients oob pointer is altered from the first location to the second, so more bytes of unwanted data get discarded. 02:12
Of course, if you send a couple of oob bytes, the location of that earlier one is forgotten, which could be a bad thing, if we were doing anything other than discarding stuff..
geekosaur exactly 02:13
this is not OOB, this is a hack that is more or less only useful for telnet
Xliff Does Perl6 have a module that groks XPath? 03:17
Hopefully XPath2?
Please?
AlexDaniel Xliff: Not yet, as far as I can see 03:21
I've also found this: github.com/supernovus/perl6-xml-xpath hehe :)
Xliff There are some on github using the same namespace.
XML::XPath -- one for Xpath 1.0, the other for XPath 2.0
XPath 2 - github.com/fjwhittle/p6-xml-xpath
XPath 1 -- github.com/supernovus/perl6-xml-xpath 03:22
AlexDaniel oh, interesting
Xliff Which sucks because I had a thought about doing something with Perl6 and XPath 2 to get my feet wet. 03:23
Although maybe I can get away with XPath 1 03:24
AlexDaniel Xliff: well, if you want to get your feet really wet then you can try that module by fjwhittle
Xliff I may try both, although I might suggest that fjwhittle rename his to XML::XPath2 03:25
AlexDaniel Xliff: last commit Jun 29, 2015 – which is before the release, and, if I am not mistaken, pre-GLR
Xliff Might put in a pull request for that.
pre-GLR?
AlexDaniel Xliff: which means that this modules will not run as is
this module*
well, the chances are not high :) 03:26
Xliff: yeah, great list refactoring
Xliff Yikes! And the XPath1 fromn supernovus is later than that!
s/later/earlier/
AlexDaniel Xliff: well, if you look closely there's nothing in that repo
just a readme…
Xliff LOL
I didn't get that far... no.... :P 03:27
AlexDaniel which is why I said “hehe :)” :)
Xliff =P =P
Xliff facepalms
AlexDaniel Xliff: OK so there were some huge changes in the way the lists are handled (like what flattens and what doesn't) 03:28
Xliff This looks more promising though... github.com/supernovus/perl6-xml-query
AlexDaniel Xliff: so some pre-GLR code requires some tiny changes. Like, sometimes you have to add “flat”
Xliff And I still say that having a "flat" operator may be insulting to some females. 03:29
And males too!
=-D
AlexDaniel m: say 42.69.nude.flat 03:30
camelia rakudo-moar 72ba5a: OUTPUT«(4269 100)␤»
Xliff And "nude" too?
Perverts!!
AlexDaniel m: say ‘x’ leg ‘y’ # :) 03:32
camelia rakudo-moar 72ba5a: OUTPUT«Less␤»
TEttinger best not mention rack-mounted servers 03:33
Xliff We want MOAR leg, not LESS! 03:34
So supernovus aparently hangs around here, sometimes.
!seen supernovus
Xliff .seen supernovus 03:35
yoleaux I saw supernovus 28 Dec 2015 18:21Z in #perl6: <supernovus> At some point I should look at rakudobrew to replace my moon script that I've been using for the last 4 years.
AlexDaniel m: say ‘ant’ leg ‘spider’ # oh look! An operator that counts the number of legs! 03:37
camelia rakudo-moar 72ba5a: OUTPUT«Less␤»
SrKeys ?p6> ('z' leg 'a').subst('re', 'ar').say 03:38
m: ('z' leg 'a').subst('re', 'ar').say
camelia rakudo-moar 72ba5a: OUTPUT«Moar␤»
SrKeys always use the wrong command in the wrong channel
Xliff Heh. 03:47
Well. Thought XML::Query might have been a good replacement, but that too is written by supernovus. At least that one is in the ecosystem, but it is not compiling. 03:48
Rather. It's failing tests.
AlexDaniel Xliff: by the way, what are you trying to do? 03:50
Xliff AlexDaniel: I'm just randomly thinking about something to work on and trying to find modules to help. 03:51
One of the things I was thinking about doing was updating an old project that used regular expressions to screen scrape. 03:52
Replacing the extraction algorithm with something more modern.
AlexDaniel so you're actually parsing HTML? 03:53
then use Gumbo
Xliff AlexDaniel, Gumbo? Will look into it. 04:12
AlexDaniel yeah, github.com/Skarsnik/perl6-gumbo
Xliff Looking now. 04:13
Although, at first blush, I -really- don't like the syntax.
Too used to XPath and jQuery, I guess.
And filtering only on one attribute is the real deal breaker. 04:16
MadcapMobile Xliff: how do you mean? 04:17
Xliff Gumbo is a tag based filter, and will only allow you to filter one attribute of that tag. 04:18
So you can't get all elements of the same class, regardless of tag.
At least I think that's what I'm reading.
parse-html(Str $html, :$nowhitespace, *%filters) 04:20
So does this match the above signature? - "parse-html($html, :TAG<p>, :SINGLE);"
Nevermind. $nowhitespace isn't given so everything after $html is slurped into %filters 04:23
This is going to take some getting used to.
MadcapMobile github.com/google/gumbo-parser/blo...nks.cc#L33 04:24
Xliff: ^ looks like you can find any attribute 04:25
Xliff Yes, but what if I want to filter based on -2- attributes? 04:26
The docs aren't quite clear on that.
MadcapMobile you would do two separate calls to gumbo_get_attribute (or whatever the P6 wrapped equiv is), that'd be something great to provide in perl6-gumbo actually (not played with it yet though) 04:27
Xliff Would like to do something as simple as: 04:28
$xmldoc.root.elements(:TAG<div>, :class<mainDiv>, :name<element-*>) 04:29
Although :name<element-*> might be asking too much
Also would need positional concepts. You don't know how useful the following construct is when dealing with the DOM 04:31
$('div ul li.myClass') 04:33
skids It will be very interesting to see how DOM idiomizes in Perl6, and we'll probably see that soon with -js looming.
Xliff -js?
skids rakudo-js
Xliff Oooooo
Yes. Veeery interesting.
MadcapMobile, put simply, I want to have flexible selectors and Gumbo might be a start but will probably not do everything I need. 04:34
Not even close since it doesn't do positional filtering.
$('div ul li.myClass') -> Return all <LI> nodes with class "myClass" that is inside a UL. That UL must be inside a DIV. 04:35
Note that between the DIV and UL and the UL and LI, any number of containing tags may be included since we aren't using the ">" selector. 04:36
MadcapMobile yes your idea sounds really neat, I'm not knowledgeable enough on Gumbo nor the wrapper to tell you whether that'd be easy, I'm in the midst of wrapping MyHTML which this is all great insight into how the high-level P6 api should work
Xliff :)
MadcapMobile so essentially you'd like to use css selector language? ala jQuery 04:37
Xliff Doesn't have to be. XPath would work. 04:44
Heck, I could even deal with a programmatic API as long as there's enough syntactic sugar so I don't have to remember the whole spec. 04:45
MadcapMobile It'd be neat to map that to a 6y API, 6y definitely wouldn't be a string-based DSL but maybe something hash-like: S(div => ul => li.myClass) 04:45
Xliff $xmldoc.root.find('a', :class<neat>).find('ul', :class<not>).find('b') -- Returns the jQuery equivalent of $('a.neat ui.not b') 04:46
Xliff Mind you I] 04:48
I'm mixing metaphors from the various projects I've looked at, today.
MadcapMobile that's not too bad for a wrapped C library, the sugary versions should be a module out from the C wrapper, I think
Xliff I'm getting sick of all of these mobile games that want to shove ads in your face (for their shit or someone else's) every 5-10 seconds. 04:58
Big Fish games are the worse. I am getting sick of seeing the Facebook "F" everywhere. 04:59
AlexDaniel m: say (^99999999999999999999999999999)[999999999999999] 05:00
right…
skids++ 05:01
camelia rakudo-moar 72ba5a: OUTPUT«(timeout)»
Xliff MadcapJake, wrapping " myhtml_get_nodes_by_tag_id(tree, NULL, MyHTML_TAG_TITLE, NULL);" into something useful might not be that hard.
He says... with tongue firmly in cheek.
AlexDaniel, I put that in my perl interpreter. How many years should I have to wait until it finishes? 05:02
AlexDaniel Xliff: it seems like after this patch you will get the answer instantly: github.com/rakudo/rakudo/pull/728 05:03
Xliff Oh, SPIFF
Lemme see if I can pull that now. 05:07
SrKeys m: my &pretty-list = *.join(', ').trans(/', '(\w+)$/ => {", and $0"}); say "I'm " ~ pretty-list <cool great cool> 05:08
camelia rakudo-moar 72ba5a: OUTPUT«I'm cool, great, and cool␤»
SrKeys the code doesn't lie
MadcapJake Xliff: Once I sit down and put a couple more (2-4 really) hours into it (HTML::MyHTML), I should have the bindings and some low-level wrappings done. Then I was planning on doing some kind of high-level module that gives you the spiffy/sugary wrapping in the vein of jQuery (maybe called 6Query/sixQuery?). 05:11
AlexDaniel sexQuery
MadcapJake o_O that might be a bit too provocative! 05:12
AlexDaniel just a little bit
again, how do I make an infinite list of one same element? 05:13
MadcapJake :P I was thinking of even finding a symbol that I could commandeer into the jQuery-style `$('string of css selectors')`
AlexDaniel: « 1 xx Inf »?
Xliff "sexQuery" too provocative for a language with "flat" and "nude" functions? 05:16
Seriously?
-_o
MadcapJake lol
maybe I could use ¢ or ¤ as they are both easily reachable unicode (a2 & a4) and would evoke that jQeury vibe 05:18
Xliff Now that I'm running WinCompose, I'm surprisingly OK with that. 05:19
c/
􏿽xA2
Xliff See? 05:19
Xliff I don't know what that second symbol was... 05:20
MadcapJake nice! that's really easy, I need to setup compose
Xliff I need a cheatsheet for my cheatsheet.
MadcapJake it's the generic currency symbol and apparently it's even on some european keyboards!
Xliff ě 05:21
Hummm... this font might not have the right glyps
=l
05:22
That's L=, not =L
AlexDaniel m: my @l = <one two three four>; say [~]((@l.reverse Z ‘ and ’, |(‘, ’ xx ∞)).flat.reverse[1..*])
camelia rakudo-moar 72ba5a: OUTPUT«one, two, three and four␤»
AlexDaniel that's not too short
SrKeys: ↑ 05:23
Xliff Whoot!
MadcapJake Xliff: try « o x » or « x o » for WinCompose to get the generic currency symbol
Xliff > say (^99999999999999999999999999999)[999999999999999]
999999999999999
Was instant!
􏿽xA4
Xliff 􏿽xA4 05:23
Xliff MadcapJake, Yup. Thanks. 05:24
MadcapJake no prob! For a symbol I just learned about today, it apparently is common and used :P
synopsebot6 seems to be having some issues
SrKeys AlexDaniel: I wasn't golfing :p 05:25
AlexDaniel SrKeys: but… but…
SrKeys: that's some regular code that I write…
SrKeys why not just
(', ' xx *)
instead of ∞
AlexDaniel ∞ looks more infinite 05:26
SrKeys fair
MadcapJake I kind of think using * there is a bit misleading as it's used elsewhere to indicate "whatever you got" 05:27
SrKeys here it can mean
whatever you need
:p
?p6> {grep 2..$^x-2: {[==] $x.polymod($_ xx*)}}(99).say # like this golf code 05:28
m: {grep 2..$^x-2: {[==] $x.polymod($_ xx*)}}(99).say # like this golf code
camelia rakudo-moar 72ba5a: OUTPUT«(10 32)␤»
SrKeys damnit
MadcapJake lol, right just feels slightly unclear
SrKeys m: {grep 2..$^x-2: {[==] $x.polymod($_ xx*)}}(90).say # like this golf code
camelia rakudo-moar 72ba5a: OUTPUT«(14 17 29 44)␤»
AlexDaniel MadcapJake: synbot does not like unicode… for some reason
MadcapJake: see this: github.com/tadzik/synopsebot/issues/8
SrKeys also your thing doesn't include the oxford comma AlexDaniel 05:29
for shame
MadcapJake synopsebot6: help
what does synopsebot6 do?
oh tickets and what's Snn? 05:30
synopsebot6: botsnack
synopsebot6 om nom nom
AlexDaniel SrKeys: if I had a comma there I wouldn't really need “and”!
m: my @l = <one two three four>; say join ‘, ’, @l
camelia rakudo-moar 72ba5a: OUTPUT«one, two, three, four␤»
MadcapJake synopsebot6: S02
AlexDaniel look! It's great! :)
MadcapJake synopsebot6: S02:12 05:31
synopsebot6 Link: design.perl6.org/S02.html#line_12
SrKeys well
sure
but the command with and gives you all the nice
while avoiding any ambiguity
one, two and three could be [one, two, three] or [one, [two, three]] 05:32
but
one, two, and three is only the first
s/command/comma/
perlawhirl hi nightshift, how are we all 05:47
perlawhirl am i able to rename a method (eg. grep) to something else... or rather, create a method that basically points to grep 05:52
SrKeys can someone confirm that this is O(n) 05:58
{@^a.first(* > max @a[^floor @a/e]) // @a[*-1]} 05:59
I don't want to get yelled at on codegolf
(whitespace added for readability) 06:00
Xliff WTF is codegulf 07:27
TEttinger shortening code so it's in as few chars as possible 07:28
Xliff Yeah, OK. 07:30
codegolf.stackexchange.com/question.../4827#4827
Coding for laughs.
Unfortunately, my brain doesn't work that way. Too straight forwward.
HOLY CRAP! Jelly is crazy! 07:33
Xliff o7 07:36
tadzik AlexDaniel: fwiw, I have no idea who actually runs synbot and what code is it using 07:45
_nadim morning! 08:51
I wonder if eqv is implemented for Match.
moritz mlenz@mlenz-workstation:~/p6/rakudo (nom)$ git grep 'eqv.*Match'|wc -l 08:52
0
looks like a "no" to me
might be a nice exercise for a new-ish-comer
Gentoolman Hi 08:57
Is anybody there?
moritz just us bots
Gentoolman How can install rakudobrew for all users? 08:58
on a Linux
moritz Gentoolman: what I did was create a separate user account with a world-readable home directory, and installed rakudobrew there
Gentoolman: and told everybody to source /home/rakudobrew/rakudobrew-bash or whatever I called that script that sets up the environment variables 08:59
Gentoolman moritz: But why a new user, if we can make just a new folder?
in /usr/perl6 for example
moritz Gentoolman: but it's a rather atypical workflow to have rakudobrew for global installation; it's usually much better to install release into /opt/rakudo-2016.02/ etc for example 09:00
Gentoolman: rakudobrew looks in the user's home directory for files by default, so a separate user is cleaner/easier
moritz Gentoolman: it's a also a security feature, so that if compiling rakudo ever accidentally removes files or so, it can only remove files from the rakudobrew user 09:01
_nadim moritz: I found hat by accident when two dumps said they were equivalent but obviously not. 09:02
nine Please do not use rakudobrew for a system wide installation. It has never been inteded for that use case. 09:13
Gentoolman Is there a way to install perl6 module system-wide? 09:25
moritz Gentoolman: sure 09:30
Gentoolman: the easiest way is to install a Rakudo Star system wide, which comes with panda
Gentoolman: then as a user that has write access to the system-wide installation (don't make that root; just give the files to somebody else) you can do 'panda install Math::Model' or something like that
Gentoolman I have gentoo and there r only rakudo, nqp and moarvm ebuilds. The panda ebuilds i found doesn't working 09:31
moritz Gentoolman: rakudo.org/downloads/star/rakudo-st....01.tar.gz 09:32
building from source isn't hard
Gentoolman I know, but i need to register it in my ports system
I better write a ebuild for panda 09:33
moritz Gentoolman: where does that need come from? 09:34
nine Gentoolman: Please do not use rakudobrew for a system wide installation. It has never been inteded for that use case. 09:44
Gentoolman: I would hold off on the packaging modules. There are a couple of issues that make packaging a lot harder than it should. Fixes are in the works and will take a couple of weeks and should be well worth the wait. 09:45
moritz installing to a location that the package manager doesn't control (/usr/local or /opt, typically) is not too nice, but not too hacky either 09:56
CurtisOvidPoe My apologies in advance. I’ll have a TechBeacon.com article on Perl 6 published soon, and they’ve gone with the click-bait title of ‘Why Perl 6 is the “Game of Thrones” of Programming Languages’ (in reference to a comment I made that A Song of Ice and Fire (GoT) started in 1991 and has been worth the wait, even though it’s not “finished”. 10:15
DrForr Dun dun duhhhh duh dunn dunn... 10:16
moritz CurtisOvidPoe: there are worse titles I could imagine :-) 10:17
CurtisOvidPoe Makes me nervous, though. Certainly wasn’t the title I originally had, but I admit that it’s a hell of a lot more attention grabbing. 10:18
xiaomiao CurtisOvidPoe: if I didn't know that I'd just ignore it 10:19
clickbait poop is not worth the attention
:\ 10:20
DrForr www.youtube.com/watch?v=SVaD8rouJn0
Juerd CurtisOvidPoe: The sad thing about clickbait is that it actually works.
masak CurtisOvidPoe: as long as we're not all dead by the end of Perl 6, I'm fine with the title 10:21
jnthn
.oO( I knew Rat.nude would come in useful for something... )
CurtisOvidPoe masak: Heh :)
masak well, I'm fine with that too, actually. at least if it means Perl 6 survives for 700 years or something.
DrForr I'll take Tyrion's role :) 10:22
masak how impish of you
DrForr "All men must die... who are related in any way to Sean Bean." 10:23
moritz
.oO( John Barleycorn must die )
10:25
azawawi hi 10:32
.seen ugexe
yoleaux I saw ugexe 22 Mar 2016 18:49Z in #perl6: <ugexe> ==>> seems like it would do what i want (but nyi)
azawawi ugexe: ping
timotimo i'm on hack and i'd like to figure out what exact version of Net::IRC::Bot is installed 10:45
nine > cat bin/pmversion 10:48
perl -M$1 -E "say \$$1::VERSION"
timotimo oh, duh :) 10:49
azawawi .tell ugexe how do i force zef into fetching the latest sources for my repo... i updated META.info and tried 'zef update'. didnot work until i did a 'zef nuke StoreDir'
yoleaux azawawi: I'll pass your message to ugexe.
timotimo "could not find symbol '&VERSION'" 10:50
could be because on hack, the system-wide rakudo is 2016.01
moritz oh, nine's answer was for perl 5 :-)
nine There is a Net::IRC::Bot for Perl 6? Oh how time flies by
timotimo has been for quite some time 10:54
RabidGravy timotimo, gist.github.com/jonathanstowe/0d53...b9df58d5c6 - adjust to taste 10:55
RabidGravy has snippets for everything
timotimo i wonder why i can't just panda --installed list
RabidGravy: you decided to not share the first line and the first character of the "for" with me, though? 10:57
RabidGravy hahaha 10:58
it's an exercise for the reader
timotimo oh lord
the "version" was last touched april 2011 10:59
so ... yeah ... i have "the latest version"
mojca I'm experiencing a failure when upgrading panda from 2015.12 to 2016.02 11:44
cd "/path/to/panda/work/panda-2016.02" && /opt/local/bin/perl6 bootstrap.pl --prefix=/opt/local
Unhandled exception: Missing or wrong version of dependency 'gen/moar/stage2/QRegex.nqp' (from 'src/Perl6/Pod.nqp') at <unknown>:1 (/opt/local/share/nqp/lib/Perl6/Pod.moarvm:<dependencies+deserialize>)
timotimo sounds like you haven't "make install"'d 11:45
mojca If someone can help me out with this ...
which part should I install?
timotimo rakudo
mojca I have MoarVM 2016.03 installed, nqp 2016.03
RabidGravy you may get this error if you are in the rakudo build directory and run another rakudo
timotimo well, something is out of date, probably the Pod.moarvm file
mojca and rakudo 2016.02 (because there is no 2016.03 yet available)
RabidGravy, I don't understand 11:46
can I actually use rakudo 2016.02 with MoarVM/nqp 2016.03? 11:47
timotimo yeah
mojca And if so, should I rebuild rakudo after upgrading MoarVM from 2016.02 to 2016.03?
timotimo as long as you're fulfilling the minimum required nqp version and your nqp fulfills the minimum moarvm version you're fine
mojca the file /opt/local/share/nqp/lib/Perl6/Pod.moarvm is binary, so I have no clue whether it is outdated or not 11:48
timotimo there are some points where you have to rebuild rakudo when your moarvm got newer
mojca ok, so I'll try to rebuild rakudo and then try again
RabidGravy [jonathan@coriolanus perl6]$ cd rakudo
[jonathan@coriolanus rakudo]$ perl6 -e 'say foo'
Unhandled exception: Missing or wrong version of dependency 'gen/moar/stage2/QRegex.nqp' (from 'src/Perl6/Pod.nqp')
there
that's what I mean
mojca is there any plan to have 2016.03 released?
timotimo you can rm -rf the whole nqp/ folder and re-install all these things
mojca ok, "perl6 -e 'say foo'" crashes with the same error
I'll rebuild rakudo
RabidGravy If you are in a directory that you built rakudo in yes 11:49
DrForr CurtisOvidPoe: Maybe throw www.youtube.com/watch?v=1CLCOvZOh1o into the comments :)
lizmat mojca: I think the plan is for today
mojca if it's going to be released today, I might just as well wait with a rebuild 11:50
I'm asking just in case: does panda also have to be reinstalled/rebuilt after upgrading rakudo? 11:51
mojca I'm actually unable to rebuild rakudo 2016.02 11:52
it "crashes" with "Stage parse : This type cannot unbox to a native string at gen/moar/stage2/QASTNode.nqp:863 (/opt/local/share/nqp/lib/QASTNode.moarvm:symbol)"
nine mojca: upgrade should not affect panda
mojca nine: thanks
nine mojca: all your modules will still be there
mojca in any case it seems that I'll have to wait for rakudo 2016.03 11:53
lizmat mojca: perhaps you need to run configure again to get the latest nqp / moar 11:54
mojca I already have the latest moarvm and nqp
and I configure from a clean directory
RabidGravy yeah, because it does work "This is Rakudo version 2016.02-200-g54ce66e built on MoarVM version 2016.03"
mojca for me it runs until "/opt/local/bin/moar --libpath="/opt/local/share/nqp/lib" perl6.moarvm --setting=NULL --ll-exception --optimize=3 --target=mbc --stagestats --output=CORE.setting.moarvm gen/moar/m-CORE.setting" 11:55
lizmat mojca: it's just that that error feels to me like a version mismatch somehow
mojca and then Stage parse : This type cannot unbox to a native string
timotimo ...wtf? :) 11:56
mojca I'll check the latest commit from github to see if that helps
jnthn mojca: Are you trying to rebuild it against nqp 2016.03?
timotimo oh, wait
this is 2016.02, the *release* 11:57
jnthn Generally you've got quite a lot of slack in using future MoarVM versions from Rakudo
mojca yes, I have installed moarvm 2016.03, then nqp 2016.03 … and only then noticed that rakudo 2016.03 has not been released yet
timotimo i didn't realize thet, sorry
jnthn But NQP versions need to kmatch more closely.
*match
timotimo i thought you were using latest from git
mojca no, I was using released versions only
but with the latest git commit of rakudo it seems better 11:58
nine I can reproduce: MoarVM 2016.03 with nqp 2016.03 will give you a "Stage parse : This type cannot unbox to a native string" in rakudo 2016.02 11:59
RabidGravy so don't do that then
mojca I'll package the latest git commit of rakudo until new version gets released (to avoid users complaining; because I already committed an upgrade of moarvm and nqp) 12:00
timotimo you're packaging for a distro?
mojca MacPorts
I don't believe we have many users anyway 12:01
will started the ball rolling
timotimo there's also potential users we should worry about
sorry to mislead you like that ;(
mojca I'll just upgrade rakudo to a commit from git, then I hope users won't experience problems 12:02
RabidGravy I'd guess that what's in there right now is a "release candidate" 12:03
mojca but I should really discuss packaging of panda with you experts
mojca and I would be really grateful if someone would look into dyncall, libtommath, libuv in MoarVM 12:05
RabidGravy "look into" 12:06
mojca because I had to mark a conflict between MoraVM and those three libraries, otherwise they all install the same files to the same locations
timotimo well, you can already use a system-wide installed version of at least some of the dependencies
mojca it would be great if MoarVM would install those dependencies to some private prefix, so that other software wouldn't find them there 12:07
timotimo i don't think we're supposed to install these libraries
RabidGravy I thought it did do that
mojca I tried to use system-wide dependencies, but it lead to a number of problems
and at some point I "gave up" because I wanted to get the job done
and some developers advised me that many libraries are simply not new enough in their latest release 12:08
with "perl6 -e 'say foo'" 12:09
I now get
===SORRY!=== Error while compiling -e
RabidGravy which is right
psch m: say foo
camelia rakudo-moar 176285: OUTPUT«5===SORRY!5=== Error while compiling /tmp/C8wbVjMH2E␤Undeclared routine:␤ foo used at line 1␤␤»
timotimo yeah, you don'thave a foo at all 12:10
mojca Undeclared routine: foo used at line 1
timotimo we could of course ship "foo", "bar" and "baz" and also "quux"
with some default implementation
RabidGravy when I typed that ^ I new it would fail before it started to parse
mojca ok, perl6 -e 'say "foo"' works
mojca I'm sorry, I've never actually used perl6, I didn't think of the example you provided me too much 12:11
mojca timotimo, yes, moarvm still ships $prefix/include/libuv/uv.h, $prefix/include/libtommath/tommath.h, $prefix/include/libatomic_ops etc. 12:14
and this is a bit annoying
timotimo yeah, that's not so good
timotimo doesn't grok the build system :(
FROGGS mojca: we dont install libtommath stuff if you configure moar with --has-libtommath 12:20
timotimo well, at least that
FROGGS mojca: same is true for --has-dyncall and --has-libuv 12:21
mojca I need to check, but isn't there some statement that at least some of these libraries are too old and that MoarVM includes the latest unreleased version?
FROGGS in fact, should be true for all of: --has-libtommath, --has-sha, --has-libuv, --has-libatomic_ops, --has-dynasm, --has-dyncall and --has-libffi
mojca: depends on what distro you are... 12:22
mojca I can try to do the installation again, but the last time it started bugging me with some completely unrelated alternative dependencies
I'm in my own distro :) :) :)
ok, joke aside
FROGGS mojca: it is surely true for libtommath, but this might get released this year
mojca we generally provide the latest versions of released software 12:23
because there are no releases, it's a "rolling" package manager
FROGGS mojca: yes, you have to compare the versions we rely on to the versions that exist for your distro before you try to use them
mojca I can start following libtommath
but this still doesn't change the fact that it' a very bad practice to install libraries to the same place where the original library would put them 12:24
and I still believe that MoarVM should fix that
wxWidgets also installs a large number of libraries, but they are all well hidden
timotimo right, we shouldn't put them quite as globally 12:25
mojca for example: github.com/MoarVM/MoarVM/issues/320 12:26
there are two examples where I was struggling to get external dependencies working (and then gave up) 12:27
RabidGravy I'm sure I've already made something for www.mybunnyhug.org/fileformats/pgm/ but can't find it 12:28
[Coke] mojca: see #p6dev, #perl6-release - 2016.03 rakudo will be uploaded today. 12:32
(evening eastern time)
we had a ticket that I thought was a blocker, but turned out to not be, and then $dayjob interfered. 12:33
mojca thank you
[Coke] mojca++ keeping macports updated! 12:35
mojca I hope you'll keep testing the packages to make sure that they don't end up in a broken state 12:35
and make some suggestions about Panda 12:36
I really don't like the current hacky approach
RabidGravy I'm sure patches would be appreciated 12:39
gregf_ m: if ( 10 < 1 ){ print "nope"; } 12:56
camelia rakudo-moar 08a760: OUTPUT«5===SORRY!5=== Error while compiling /tmp/LSznfPQLPc␤Missing block␤at /tmp/LSznfPQLPc:1␤------> 3if ( 10 < 1 ){ print "nope"; }7⏏5<EOL>␤ expecting any of:␤ block or pointy block␤»
gregf_ m: if ( 10 < 1 ) { print "nope"; } 12:57
camelia ( no output )
gregf_ the compiler is looking for whitespaces :|
or parser
psch m: say %( a => 1, b => 2){'a'} 12:59
camelia rakudo-moar 08a760: OUTPUT«1␤»
psch because that wants to work
well, maybe not *only* because of that :)
perlpilot gregf_: you don't need parens there. And yes, whitespace between ) and { would be required for Rakudo to parse it correctly. 13:00
gregf_ perlpilot: yeah, i saw that, but just for better readability 13:01
RabidGravy Is there anything in the ecosystem that will parse "Mon, 14 Mar 2016 13:28:19 +0000" as a DateTime? DateTime::Parse doesn't quite manage it 13:02
ah DateTime::Format::RFC2822 13:04
gregf_ im not able to figure out why this code is failing 13:15
gist.github.com/anonymous/ee9caad3bc145cdfef37 13:16
do i need to instantiate Prime? can i not just call it as a class method?
psch m: gist.github.com/anonymous/ee9caad3bc145cdfef37
camelia rakudo-moar 08a760: OUTPUT«Cannot look up attributes in a type object␤ in method is_prime at /tmp/zfmMGEiTJi line 12␤ in method test at /tmp/zfmMGEiTJi line 24␤ in block <unit> at /tmp/zfmMGEiTJi line 29␤␤»
ilmari RabidGravy: does it handle all the date formats in youtu.be/JENdgiAPD6c?t=11m4s ? 13:17
timotimo m: say Int.new(99)
camelia rakudo-moar 08a760: OUTPUT«99␤»
ilmari including comment-folding-white-space
psch m: say Int.is-prime
camelia rakudo-moar 08a760: OUTPUT«Invocant requires an instance of type Int, but a type object was passed. Did you forget a .new?␤ in block <unit> at /tmp/QoDaxnJyqi line 1␤␤»
gregf_ hmm :|
timotimo gregf_: you have to create a new Prime instance otherwise $.start won't work
gregf_ true :|, my bad 13:18
timotimo :)
psch similarly, an uninstantiated MyInt doesn't have a value either
gregf_ can it be made a class variable/ static?
RabidGravy ilmari, I'm sure you can fix it to do so 13:18
gregf_ psch: im instantiating it in the first map
RabidGravy I on the other hand only want to parse one particular format 13:19
psch oh, right, didn#t see that, sorry :)
gregf_: you could do 'my $start = 2' instead of 'has $.start is rw = 2', but then you have to reset it at the end of your is_prime 13:20
gregf_ ah, right
psch (you could also use CORE::<&is-prime> instead... :) ) 13:21
gregf_ timotimo: psch: Thanks!
oh , ok :)
psch m: say ^1000 .grep: *.is-prime
camelia rakudo-moar 08a760: OUTPUT«(2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 …»
psch it's probably faster, too :)
gregf_ hmmm 13:22
RabidGravy oh dear, that module can't *parse* those dates at all 13:23
or any dates 13:24
c'mon you slackers do I have to make everything for myself
perlpilot RabidGravy: you make everything for everyone else too :) 13:25
DrForr I'm guessing that the interest in is-prime is because of the recent prime-number bias that's been found? :) 13:29
RabidGravy we need more people actually writing software
psch is compiling 13:30
timotimo since i'm into making video games, i'm kind of blocked by performance :) 13:31
but to be fair, i've never actually maked a game yet
DrForr So far my talks on web development seem to be the popular thing :) 13:31
RabidGravy DrForr, I've noticed that the tests for Prancer only seem to test GET routes, is this because POST/PUT/DELETE don't work or you just haven't got round to it 13:32
jnthn is writing the MoarVM heap snapshot analyzer in Perl 6 *right now*! :) 13:33
RabidGravy jnthn++
I'm writing a thing to manage icecast servers 13:34
but the date thing might block me
jnthn Ugh. So far I've fixed 2 perf bugs (one in Rakudo, one in Moar) that were in my way... :) 13:35
DrForr The latter, but I'm not going to go to too much work as there's nothing in the code that distinguishes between GET and the others.
timotimo it surprises me that you actually got a performance problem out of a sync read blocking the GC 13:36
though i suppose when you're reading a line that's a megabyte or two long ... 13:37
RabidGravy so it's just try it and see what happens
jnthn timotimo: Command line app that processes stuff while waiting for you to type a query :) 13:40
(So it might be ready when you are)
timotimo right 13:42
El_Che <old man pointing at clouds mode> Go's stdlib command line handler is as weird as Perl6's: switches before arguments and anti-posix look and feel. Overwriting functions (e.g. usage) is more flexible though<cloud passed> 13:53
moritz more flexible than allowing a custom USAGE sub?
El_Che yes, e.g. wrapping the existing function and adding stuff. Instead of replacing the complete usage funciont 13:56
(my argument is that perl6 approach is more flexible)
xiaomiao Go is quite horrible because it doesn't distinguish short and long opts 13:57
it's the little detail that create friction ... :\
El_Che xiaomiao: I am using this: github.com/docopt/docopt.go
It would be nice to see this ported to p6: docopt.org/ 13:58
RabidGravy feel free
El_Che looking at it now
xiaomiao El_Che: nice, but why is that not the standard ;)
El_Che xiaomiao: I feel your pain
xiaomiao El_Che: no, you don't ;) the real pain is "go get" and github together
El_Che xiaomiao: unversioned remoted github dependencies? mmm :) 13:59
xiaomiao El_Che: we see on average 3% connection failure rate 14:00
xiaomiao with 30 dependencies on github ... well ... bash has nice loops to force success ;) 14:00
perlpilot Didn't Damian do something like that for Perl 5? (write your command line doc using the normal conventions and it auto-processes the command line)
RabidGravy also I'd really like Int("unlimited") to be Inf 14:01
moritz would really dislike that
timotimo we can't reasonably support Inf to be stored in Int objects
moritz seems like a very English-centric thing to do when parsing strings 14:01
RabidGravy yeah, it's just this pain in the arse data is "some integer or 'unlimited'" 14:02
RabidGravy though, I'm not entirely sure that: 14:05
m: my Int $a = Int.max
camelia rakudo-moar 08a760: OUTPUT«Type check failed in assignment to $a; expected Int but got Num (-Inf)␤ in block <unit> at /tmp/ieQWDjOhLc line 1␤␤»
RabidGravy is very useful at all
perlpilot It certainly seems counter-intuitive 14:06
lizmat m: my Int $a = int.max; # works fine :-) 14:08
camelia rakudo-moar 08a760: OUTPUT«Type check failed in assignment to $a; expected Int but got Num (-Inf)␤ in block <unit> at /tmp/kkBZbpL5GA line 1␤␤»
lizmat no?
lizmat hmmm... 14:08
RabidGravy goes with some very big number instead 14:09
lizmat m: dd int.Range # confused it with this 14:10
camelia rakudo-moar 08a760: OUTPUT«-9223372036854775808..9223372036854775807␤»
RabidGravy actually I'd be surprised if "unlimited" in this context is more than (2**32) - 1
lizmat m: dd int8.Range # confused it with this 14:11
camelia rakudo-moar 08a760: OUTPUT«-128..127␤»
skids www.theregister.co.uk/2016/03/23/np...pad_chaos/ # What we don't want happening to our ecosystem 14:30
lizmat well, in fact, we had that happen already...
:-( 14:31
tony-o what did we have like that
lizmat: what do you use for determining where an application is spending most of its time? IE if some loop is using most of the time the process runs, etc ? is there something like that in p6 currently? 14:33
lizmat tony-o: somebody pulling their modules from github and the ecosystem 14:34
because they didn't like github
tony-o: wrt to profiling: --profile is your friend :-)
tony-o lizmat: oh really? i thought maybe it happened with SF left, didn't know about the github piece
RabidGravy yeah, installing from gh is a little fragile 14:35
timotimo yes, we don't want to rely on that for much longer
ilmari ranguard and co are working on perl6 support for cpan, no? 14:36
tony-o it seems it should work from any git - i have a server i can set up gitlabs on if you guys want some access to it
i remember having an issue with bitbucket installs 2 years ago
timotimo jdv is working on something. i know that much
tony-o lizmat: the profile came out with a bunch of {{var}} stuff in it - is there something i need to do to get those values filled in? 14:37
oh, i need to be patient :-)
timotimo yeah, takes a little bit :S 14:38
lizmat yeah, the generated HTML is usually large :-)
tony-o this is a great tool. i'm trying to figure out why a parallel testing thing i'm working on is slower than 'prove -j9' but now i can see why : 14:40
it's faster than just 'prove', at least
MadcapJake How difficult would it be to make perl6 work with this github.com/whyrusleeping/gx 15:14
AlexDaniel well, ideally it should be possible to have non-github modules 15:15
in fact, it would be even better if it was possible to provide several mirrors
Woodi hi today :) 15:16
iH2O hi Woody 15:17
_nadim im: my %a = <a 1 b 2> ; my @l = (%a<a>, %a<c>) ; @l.perl.say ;
m: my %a = <a 1 b 2> ; my @l = (%a<a>, %a<c>) ; @l.perl.say ;
camelia rakudo-moar e57e63: OUTPUT«[IntStr.new(1, "1"), Any]␤»
stmuk_ I'd assume the ecosystem would work with gitlabs although I've not actually tried it
tony-o MadcapJake: AlexDaniel: the CUR stuff is improving and getting to a point where that is possible without CORE changes
_nadim How do I write the line above soif %a<c> doesn not exist, itis not added. IE: not get theAny on thelist. 15:18
tony-o stmuk_: i was going to test that out in a bit
MadcapJake AlexDaniel: gx works with IPFS so each person could be a repo of modules
lizmat _nadim: what makes you think it was added ?
m: my %a = <a 1 b 2> ; my @l = (%a<a>, %a<c>) ; dd %a 15:19
camelia rakudo-moar e57e63: OUTPUT«Hash %a = {:a(IntStr.new(1, "1")), :b(IntStr.new(2, "2"))}␤»
AlexDaniel m: my %a = <a 1 b 2> ; my @l = (%a<a>, %a<c>) ; dd @l
camelia rakudo-moar e57e63: OUTPUT«Array @l = [IntStr.new(1, "1"), Any]␤»
lizmat m: my %a = <a 1 b 2> ; my @l = (%a<a>, %a<c>:v); dd @l
camelia rakudo-moar e57e63: OUTPUT«Array @l = [IntStr.new(1, "1"), ()]␤»
lizmat hmmm
m: my %a = <a 1 b 2> ; my @l = (%a<a>, %a<c>:v); dd @l.elems 15:20
camelia rakudo-moar e57e63: OUTPUT«2␤»
_nadim lizmat: I mean added to the list I am creating
lizmat hmmm.
ok
sorry, misunderstood
_nadim no problems :)
lizmat m: my %a = <a 1 b 2> ; my @l = %a<a c>:v; dd @l
camelia rakudo-moar e57e63: OUTPUT«Array @l = [IntStr.new(1, "1")]␤»
AlexDaniel well, you can grep it out but…
lizmat _nadim: ^^^
AlexDaniel right!
lizmat :v will grep only existing entries out for you 15:21
_nadim OK!
_nadim what's this dd that dumps the structure? 15:21
timotimo "dump data"
MadcapJake tony-o: that's what I was hoping! The concern I have is, can I have a package depend on an individual package/vendored directory for dependencies? so that all dependencies are internal to a module/project
_nadim timotimo: is that standard? 15:22
lizmat _nadim: yes it is 15:22
it's the tiny data dumper, so tiny it lost the t
tony-o MadcapJake: i'm not sure i'm understanding your question - the distribution stuff ugexe is working on will be able to select based on module/vendor/version/auth so that is in the works currently 15:23
the other part of your question, i don't know what that would look like from a repository side, how would you include all of the depends without explicitly packaging them as part of your module? 15:24
_nadim m: my %a = <a 1 b 2> ; my @l = (%a<a>, %a<c>:v) ; dd @l ;
camelia rakudo-moar e57e63: OUTPUT«Array @l = [IntStr.new(1, "1"), ()]␤»
_nadim lizmat: it still returns a enpty list
timotimo _nadim: you need to fix the "width of terminal makes tests either fail or pass" thing, that's super unfortunate 15:25
_nadim timotimo: it done already ;)
ranguard ilmari: CPAN supports perl6... it's just downstream that has issues
mst is looking at those I think 15:26
_nadim i just needed to see if it was not something else on someone else's compuer
lizmat _nadim: why are you not using the slice?
%<a c>:v ?
_nadim because in reality I am using two different hashes.
lizmat ah, ok
m: my %a = <a 1 b 2> ; my @l = %a<a>, %a<c>:v; dd @l 15:27
camelia rakudo-moar e57e63: OUTPUT«Array @l = [IntStr.new(1, "1"), ()]␤»
lizmat m: my %a = <a 1 b 2> ; my @l = %a<a>, |%a<c>:v; dd @l
camelia rakudo-moar e57e63: OUTPUT«Unexpected named parameter 'v' passed␤ in block <unit> at /tmp/UhH15PHb_S line 1␤␤»
lizmat m: my %a = <a 1 b 2> ; my @l = %a<a>, |(%a<c>:v); dd @l
camelia rakudo-moar e57e63: OUTPUT«Array @l = [IntStr.new(1, "1")]␤»
lizmat _nadim: I guess for now you need to slip it
ranguard tony-o: not sure why people feel the need to re-implment a working distributed network with specific release control and archiving built in 15:28
ilmari ranguard: downstreams as in (meta|search\.)cpan?
Woodi that's idiotic what Kik lawyers did... story: there is students pub/disco/club in my university town named 'Imperial'. And that club was first opened somewhere in the soc-realism era (70s probably). Of course censors intervened... "How you can name something like that ?? That's worse then capitalism !!!1". But then one of the students showed them *few* labels of products named 'Imperial', one of them was popu
MadcapJake ranguard: cpan is a distributed network?
ranguard ilmari: cpan testers / irc bots etc
Woodi lar canned fish :) so lawyers ... 15:29
... just interned-killed that Kik-something...
ilmari ranguard: ah
ranguard MadcapJake: mirrored on 235 servers around the world
_nadim lizmat: hmm, no it comes from the same hash, I was wrong. but still, it is goodto know for next time. now, what do you mean with "slip it"?
ranguard MadcapJake: metacpan.org/mirrors
lizmat prefix it with | 15:30
Woodi 'C' is from 'Cloud' ? :)
ilmari Woodi: no, but N is for Network
timotimo _nadim: is it? i just ran "panda install Data::Dump::Tree" in a narrow terminal ("only" half of one of my screens) and it failed
Woodi ah ;)
ilmari Comprehensive Perl Archive Network
it long predates "cloud"
it's just a network of mirrors 15:31
MadcapJake ranguard: but is that really distributed? npm has mirrors all around the world too
ranguard MadcapJake: backpan never deletes
ilmari MadcapJake: and CPAN mirrors are run by disparate organisations and individuals, whereas AIUI all the npm mirrors are run by NPM, Inc 15:32
ranguard there are at least 4 backpans that I know off, and that doesn't count the tools built around CPAN (CPAN::Mini, Carton etc) that let you run your own easily
Woodi npm use some specific license ?
ranguard this is a solved problem.. (ok, there are edges that could be better) but I've not seen a better RUNNING solution 15:33
tony-o ranguard: what do you mean re-implement a working distributed network? are you referring to cpan? 15:34
ranguard tony-o: yea 15:35
tony-o ranguard: i'm sure some of that need is the lack of gui type tools, plus it isn't 'pretty' 15:37
stmuk_ I think CPAN can be used as a backend but the requirements for perl 6 module installation are very different to perl 5 and the devil is in the details 15:39
RabidGravy yeah it's the tools not the storage that are at issue
MadcapJake tony-o: gx downloads packages/modules to a vendor directory in your workspace and I'd like to have perl6 compile into this vendor directory instead of the global dir, could I just dynamically change RAKUDO_PRECOMP_DIST for each workspace? 15:41
mst I'd also note that the last time somebody tried legal shit on us, they called me in, and p3rl.org/Nagios::Plugin was the result 15:42
it helps when the people running your centralised SPOF have a spine 15:43
tony-o MadcapJake: in zef (at least a long time ago) i wrote in a way to override the install dir to be local to the directory (like npm does). i'd need to ask ugexe or dig through that code again to see if it still exists
MadcapJake: the result was having to add a relative dir to PERL6LIB environment var IIRC and it probably got taken out as a result 15:44
MadcapJake tony-o: I could have the gx-perl6 tool manage the PERL6LIB var 15:46
tony-o MadcapJake: it's most likely doable currently with a shell script, i'm not intimately familiar with gx but if were able to install a distro to a user's workspace and set their PERL6LIB var to that workspace then you'd be there 15:47
the module/auth/vers thing isn't working as expected yet, though afaik 15:48
ranguard tony-o: yea, people like the pretty :) 15:49
RabidGravy it works for "use" but not in the requires of a META.info afaik
ranguard RabidGravy: well, the storage not allowing things to easily dissapear kind'a helps :) 15:51
MadcapJake tony-o: awesome! gx provides a series of hooks for specific language tools to use (similar to npm builtin scripts) so I'd just need to do the perl6 specific stuff (compiling and changing PERL6LIB) and the gx tool will provide the interface to IPFS and the downloading
RabidGravy mst, strangely a monitoring framework is one of the things on my list 15:57
Hmm, it looks like I'm about to re-do a lot of the things that I'm doing for Sofa but for the icecast XML data rather than JSON 16:01
TIME FOR REFACTORING!
Juerd RabidGravy: I'd love a monitoring framework based on TAP. I wrote something in p5 and I actively use it, but I kind of abandoned the project. 16:04
pastebin.com/BeyFyWpe # example of a test script I use for monitoring 16:06
Juerd This is also where the idea for an 'except' operator came from (line 23: @forum except 'www.wegenforum.nl') 16:07
This thing does both ipv4 and ipv6 so every test is actually two tests, unless "no ipv6;" or "no ipv4;" is in effect. 16:08
I've found many inconsistencies between ipv4 and ipv6 configs using this thing.
ugexe you can pick here it installs to, you just cant control where the precomp goes to
yoleaux 10:49Z <azawawi> ugexe: how do i force zef into fetching the latest sources for my repo... i updated META.info and tried 'zef update'. didnot work until i did a 'zef nuke StoreDir'
RabidGravy Looks nice
go for it
I'm mostly using monit these days 16:09
ugexe azawawi: `zef update`, or `zef update p6c` (to just update the normal ecosystem)
MadcapJake ugexe: there's no way to control where precomp goes?
Juerd RabidGravy: It's already on my wishful-thinking-to-do-list, but I'm afraid to mention tuits because someone might give me a wooden coin and except me to start working on it :P
s/except/expect/ 16:10
ugexe MadcapJake: precomp location is determined by the CompUnit::PrecompilationRepository
MadcapJake ugexe: can I change it? :)
RabidGravy you can set $*REPO to something that does 16:11
ugexe MadcapJake: you could probably subclass CURI to use a custom CU::PrecompilationRepository
psch RabidGravy++ 16:12
Audio::PortMIDI is fun
gist.github.com/peschwa/aaeb20debb7afb36c09b
psch ...note that the Positions enum clearly only fits onto ionian 16:13
ugexe getting it to precomp to a specific location you can do realatively easy though i believe. its the actual using of the location
MadcapJake ugexe: is that a viable way to do a local set of precomps?
RabidGravy psch, that almost looks like a module you have going there ;-)
ugexe MadcapJake: for a local set of precomps you are currently stuck with using ~/.perl6 afaik 16:14
psch Audio::DrunkPiano or what..? :P
RabidGravy :)
psch RabidGravy: fwiw, i'm not really happy with... most of it 16:15
as in, i have trouble thinking of a way to make it fit onto different modes
ugexe you can direct the directory of the precomp files via the first `-I` command
if you do -Ilib, it gets put in lib/.precomp. if you do -I. you get a .precomp. this can be abused 16:16
MadcapJake ugexe: oh I could totally use that, is there going to eventually be a facility to control precomp location? 16:19
ugexe nine has been working on precomp stuff, and i believe may have solved the $?FILE problem which may lead to using relative paths in precomp
ugexe and ive been working on internal Distribution stuff to allow a user to supply some of that type of functionality from the outside 16:20
so all that type of stuff will get an upgrade in the next few months i would imagine
i want to be able to have a FatPacked CompUnit::Repository, or even just a bundled 16:21
uvtc What is the Perl-6-equivalent to Python's `for i,x in enumerate(arr): ...` (where `i` is the index and `x` is the elem)? That is, for the case where you want to iterate over an array but want the index too. 16:23
RabidGravy Now if I could just generalise this github.com/jonathanstowe/Sofa/blob.../Method.pm to deal with xml as well as json then all would be good
SrKeys uvtc: for @a.pairs 16:24
ugexe @a.grep(*.so, :p)
jnthn m: my @arr = <a b c>; for @arr.kv -> $i, $v { say "$i = $v" }
camelia rakudo-moar e57e63: OUTPUT«0 = a␤1 = b␤2 = c␤»
SrKeys Oh right 16:25
Kv
Not pairs
Doi
jnthn Well, paris does work too
*pairs
SrKeys I do prefer kv though
RabidGravy we'll always have Paris 16:25
uvtc Oi!
SrKeys Pairs makes me think it does .rotor(2)
uvtc Oui
SrKeys Rather than interleave the index
uvtc Thanks, @a.kv was what I was looking for. 16:26
SrKeys m: <a b c d>.pairs.say
camelia rakudo-moar e57e63: OUTPUT«(0 => a 1 => b 2 => c 3 => d)␤»
SrKeys Oh
m: <a b c d>.kv.say
camelia rakudo-moar e57e63: OUTPUT«(0 a 1 b 2 c 3 d)␤»
SrKeys I see 16:27
SrKeys Rude 16:29
Didn't stick around for good times
ugexe is there a better way to "take the .value of a Pair if its a string, otherwise assume .value is a hash and take .value.keys[0]" other than `$_.value ~~ Str ?? $_.values !! $_.values.keys[0]` ?
{"x
getting `y` from both: {"x" : "y" } {"x" : {"y" : "z"} } 16:30
the purpose of attaching arbitrary meta info to leaf node "y" (extending it for some subclass) while still allowing the first format to be understood 16:31
SrKeys Maybe do some fun recursing traversing 16:31
ugexe the conditional above handles it. i was hoping there was some list operation though that could pull it off 16:32
lizmat ugexe: if it were the .values[0] of the list you're after
you could do something like $_.value.pairs[0].value
m: dd 42.pairs[0].value 16:33
camelia rakudo-moar e57e63: OUTPUT«42␤»
uvtc SrKeys, huh? Me rude? Thank you for the help. Unable to stay logged in ATM.
Plus, the good times never stop around here. It's 24-7. :) 16:34
tony-o mst: what happened with the nagios module? i used that several years ago, iirc
SrKeys I was just joking uvtc
:p
FROGGS NO LOL, NO PROJECT EULER 16:35
SrKeys Check out this fun recursing traversing gist.github.com/johnspurr/6e5b92102c342eea449d 16:35
mst tony-o: did you read the current tombstone release? I pretty much described it 16:35
SrKeys Ignore any poor form in there 16:36
Or weird hacky bits
It was just a quick script to make life easier
tony-o mst: tombstone release? the document you linked to?
mst tony-o: yeah 16:37
I mean, like, the first two paragraphs basically summarise what went wrong originally 16:38
tony-o that's kind of a dumby [audible b] move from nagios
i liked their software, now they seem like a bunch of twats
mst yes, but they're forever doing things like that 16:39
Naemon is basically "the outside guy who did most of the work for Nagios Core 4 was summarily kicked off the project because he was being offered consulting work and they didn't want to share" 16:40
RabidGravy wasn't nagios something else before
tony-o i don't think it would be difficult to one up their software, configuration wise it is a bear and the concept of how they test is very simple
RabidGravy like ten or more years ago
mst www.legendiary.at/2014/01/23/nagios...-the-mama/
covers even more insanity
tony-o i like that title.
RabidGravy ah yes, netsaint 16:43
stmuk_ hasn't nagios been forked to something more open source now anyway? 16:46
mst it's been forked repeatedly
stmuk_ icinga 16:47
mst I literally just meantioned Naemon, the most recent one
and icinga, and there's at least one other I think
ugexe lizmat: my problem is when the leaf is also the root 16:49
m: sub foo($x) { $x.pairs[0].key }; say foo(%( :x(:y(1)) )); say foo(%( :x("y") )); say foo("y");
camelia rakudo-moar e57e63: OUTPUT«x␤x␤0␤»
ugexe m: sub foo($x) { $x.values[0] ~~ Str ?? $x.values[0] !! $x.values[0].keys[0]; }; say foo(%( :x(:y(1)) )); say foo(%( :x("y") )); say foo("y"); # ugly
camelia rakudo-moar e57e63: OUTPUT«y␤y␤y␤»
ugexe my Pairs example is flawed, but demonstrates what im looking for (Str can also be treated as a list, so hoping for some list method that would happen to align the stars to handle that) 16:51
Woodi stuck somehow in Mon era... 16:56
stmuk_ cricket! 16:59
RabidGravy goats! 17:01
RabidGravy Oooh a planetccrma RT kernel *the same version* as the stock kernel 17:03
that's never happened before
Xliff What is Match? 17:05
RabidGravy say ( "foo" ~~ /o/).perl 17:06
m: say ( "foo" ~~ /o/).perl
camelia rakudo-moar e57e63: OUTPUT«Match.new(ast => Any, list => (), hash => Map.new(()), orig => "foo", to => 2, from => 1)␤»
moritz the return value of a successful regex match
jkramer Hello! 17:06
dalek osystem: 0853a27 | Altai-man++ | META.list:
We have a snowball stemmer module in bindings.md, but not in the ecosystem.
osystem: e2801f2 | (Zoffix Znet)++ | META.list:
Merge pull request #177 from Altai-man/master

Snowball module: See github.com/Sufrostico/perl6-snowball/
Xliff Ah.
Woodi about installing from github: it's nice except commit granularity is to fine... and release too coarse - waiting a month is hard is some environments ;) release is something to what devs should py attention so maybe tags can be used as when there is known good for users state of internals ?
SrKeys So risk-averse woodi 17:07
Woodi SrKeys: why ? :)
jkramer I want save some kind of action (would say code ref in p5) as attribute in an object and change it to some other callback every once in a while. How do I do that in p6?
SrKeys jkramer: probably just have an attribute &foo 17:08
And store a callable in it
jkramer I currently have a "has Callable $.action" in the class but it dies with "Cannot modify an immutable Callable" whenever I want to change it
SrKeys Why not
moritz jkramer: you have to make it 'is rw' to able to change it from the outside
SrKeys has &.foo
Oh right 17:09
That too
jkramer I'm in the inside though - kind of
RabidGravy m: class D { has &.foo is rw = sub { say "foo" } }; my $d = D.new; $d.foo.(); $d.foo = sub { say "bap" }; $d.foo.();
camelia rakudo-moar e57e63: OUTPUT«foo␤bap␤»
moritz jkramer: then you need to assign to the ! form
jkramer: so &!foo = ...; instead of &.foo = ...; 17:10
jkramer One problem might be that the callback itself needs to be able to change the callback attr to a new callback. I guess that's outside?
moritz jkramer: yes, unless the callback code is also on the inside
jkramer The callback is called by the object
And is also defined by a method of the object
Ah, just adding the "is rw" seemed to help. It still crashes, but it seems to be a different problem now :) 17:11
Thanks!
Xliff Is anyone on the "panda look" bug where it blocks further execution "perl6" in interactive shell mode? 17:23
hoelzro Xliff: I opened an editor before I went to work with the intent of looking at it after work 17:25
granted, I have a social thing after work tonight, so no promises there =/
pmurias hi
hoelzro o/ pmurias 17:26
Xliff hoelzro: No problems. Thanks for answering. I ran into that one, yesterday.
If I could help, I would. :/
hoelzro I remember!
Xliff A feature request for panda would be to have the equivalent of "look" that -doesn't- require the sub-shell. 17:27
Like I want to download and inspect the sources in a more permanent manner.
I'm kinda in that situation, right now. 17:28
stmuk_ just "panda info" and git clone the url? 17:29
actually that would make a useful new option IMO
Xliff Huh! Didn't think about it that way, but yes.
"panda inspect" 17:30
RabidGravy but without the subshell you won't be in the directory when panda exits
hoelzro I think `panda get $module` that downloads and prints the destination directory would be nice 17:31
sena_kun Also, about panda's options. Is it modulary enough to write modules without knowing its all codebase? I'd like to write one or two, but I don't know is it needed and easy enough. Also, panda had some troubles with "remove module" option before, is it related to question? 17:34
RabidGravy you don't really need to know anything about panda to write a module 17:43
just make the META file correctly and you're good
sena_kun RabidGravy, no, I meant a different thing. I meant, for example, to write for panda some new feature to call it from a command line. 17:44
RabidGravy I don't understand the question then 17:45
stmuk_ sena_kun: if you want to add options to panda just try forking it and modifying the code 17:47
ugexe `zef fetch XXX` fetches and tells you where it extracts to 17:48
sena_kun stmuk_, oh, okay. 17:49
ugexe zef also allows you to write plugins for different stages of the install process that you can turn on/off with a custom command line option (--cpan or --/cpan for instance)
dalek c: e9bbef9 | (John Gabriele)++ | doc/Language/control.pod:
Add `@foo.kv` example to `for` sample code.
17:50
ugexe also uninstalls if the rakudo is a little newer than 6.c 17:51
Xliff OK. So here's a question. 17:51
What would make a Match object equivalent? 17:52
$.orig, $.from, $.to are easy. It's $.made and $.CURSOR that confuse me.
moritz well, $a.made eqv $b.made 17:53
CURSOR isn't all that intersting; the sub-captures are
Xliff Yeah. Thought so. How are the sub-captures represented. Thought those would be in $.CURSOR 17:55
I'm just poking through Match.pm for .... I dunno
Halibut
arnsholt Xliff: Let me answer with a different question: For what purpose do you want to compare match objects? 17:57
Xliff eqv?
Doesn't exist yet.
There would be recursion, I would expect. 17:58
skids gist.github.com/skids/d1552470ba7c4ca6d318 might help but might have some stale parts.
moritz Xliff: I'd expect there to be recursion in infix:<eqv>(Match, Match), yes 18:00
moritz because Match is basically a tree 18:00
Xliff Yeah.
travis-ci Doc build failed. John Gabriele 'Add `@foo.kv` example to `for` sample code.' 18:00
travis-ci.org/perl6/doc/builds/118040250 github.com/perl6/doc/compare/8fa79...bbef91d198
Xliff And I'm trying to figure out how to descend it. 18:00
Or ascend it, if you are upside down.
pmurias jnthn: what makes a VMException stringify to the message? 18:02
tony-o mst: JC that's a lot of drama
especially for people trying to expand a community for free
mst tony-o: indeed 18:03
jnthn pmurias: Hm, perhaps that smart_stringify thingy 18:04
pmurias jnthn: thanks 18:05
jkramer How does p6 feel about circular dependencies lately? I just noticed it'll use up lots of CPU and hang when two modules use each other, but then again I noticed I'm moar-2015.12. 18:28
Just upgrading, but will that fix it? Should I open a report?
jkramer Seems to be still open: rt.perl.org/Public/Bug/Display.html?id=126688 18:29
moritz the fix will be a better error message 18:30
jkramer Hmm, guess I need to find another way to do it. 18:32
moritz aye
psch idk, i think prevent an obvious circular dependency from eating all memory is something we maybe should consider
as in, Foo.pm with "use Bar;" and Bar.pm with "use Foo;" doesn't seem like it should eat all my memory 18:33
Juerd I think it should fail gracefully. 18:33
Or be handled in a sane way, if that's at all possible.
But death by infinite loop isn't a nice thing :) 18:34
psch on the other hand we do accept similar things with recursion or regex, so maybe modules are just something i don't recognize the obvious pitfall as one
jkramer Meh, now I have to think about my OOP design instead of getting my stuff done :D 18:37
A global variable might solve all my problems 18:38
RabidGravy or define the two classes in the same scope so you can predeclare with a stub 18:39
psch or a global stub that you inject into Any /o\ 18:41
RabidGravy :) 18:42
jkramer They all don't feel right, it's like working around obstacles the language creates for no reason. I mean, there are probably good reasons for not allowing circular deps, but I don't know 'em :) 18:42
RabidGravy if they are so tightly coupled it doesn't make sense to me for them to be in different files 18:43
psch jkramer: the fact that the ticket (#126688 that is) exists means to me that it's not something that's finished
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=126688
jkramer What would be a good OOP design for this situation: I have a server class which can have x client sessions as an array attribute. However the clients need to access the server object in order to communicate with other clients. 18:44
psch: Yeah but as moritz said, the solution will be an error message 18:45
skids define a role containing the functions that a client should be using from the server, in a third file. Use that as the type contraint on Client.server 18:46
RabidGravy yeah, that was my third option
skids (or visa versa client/server)
RabidGravy but
psch jkramer: right. practically, i'd go with what RabidGravy suggests; e.g. < unit module Thingy; class Thingy::Server { ... }; class Thingy::Client { ... } > or somesuch 18:47
jkramer BTW the server is a singleton and all I need to use the server class for is to get the instance method :)
Xliff Is uniq still in perl6?
RabidGravy m: module Thing { class Server { ... } ; class Client { has Server $.server; }; class Server { has Client @.clients };
camelia rakudo-moar e57e63: OUTPUT«5===SORRY!5=== Error while compiling /tmp/GuhMBeAyc4␤Missing block␤at /tmp/GuhMBeAyc4:1␤------> 3; class Server { has Client @.clients };7⏏5<EOL>␤»
RabidGravy m: module Thing { class Server { ... } ; class Client { has Server $.server; }; class Server { has Client @.clients; }; 18:48
camelia rakudo-moar e57e63: OUTPUT«5===SORRY!5=== Error while compiling /tmp/L2IWVi9MvJ␤Missing block␤at /tmp/L2IWVi9MvJ:1␤------> 3 class Server { has Client @.clients; };7⏏5<EOL>␤»
RabidGravy m: module Thing { class Server { ... } ; class Client { has Server $.server; }; class Server { has Client @.clients; } };
camelia ( no output )
RabidGravy too many curlies
psch RabidGravy: that's why i left two out!
jkramer RabidGravy: Still doesn't feel right because both classes are fairly big and complex, but I guess it's the best solution now
RabidGravy or what skids said
define roles in separate files and use that as a typeconstraint 18:49
that has a side benefit
skids Well, with a singleton just used as a handle, I'd just go with a global, personally.
psch Xliff: .unique is 18:50
Xliff: the hummanization was deemed not worth it, *nix legacy not withstanding
err, huffmanization 18:51
Xliff LOL 18:53
OK. Next question. Can you manually enter subroutines in perl6 interractive mode?
Xliff If not, I will script. Probably easier. 18:54
psch Xliff: you can define subs in the REPL, yes 18:55
skids I believe recent enough rakudos can multi-line as well.
psch skids: isn't that still in a branch? 18:55
skids I thought part of it was merged with more left in a branch? 18:55
Maybe I am wrong.
skids > sub a { 18:56
* 1.say
* }
sub a () { #`(Sub|74101808) ... }
psch huh 18:57
psch hm, the repl6 branch has a commit today though 18:57
psch so yeah, probably the base mechanism merged already and hoelzro++ keeps expanding it 18:57
hoelzro the multi-line stuff is in nom 18:57
skids Or redoing the hacky bits better. 18:58
hoelzro repl6 is the REPL re-implemented in Perl 6 instead of NQP
psch hoelzro: ohh, okay
skids OHAI hoelzro :-)
hoelzro I'm going to merge repl6 back into nom after 2016.03 goes out, in case it blows up =)
o/ skids
psch hoelzro: does repl6 still have the BEGIN hangup?
awwaiid nom nom nom
psch or was that already solved anyway..?
hoelzro psch: which BEGIN hangup? 18:59
psch as in, a BEGIN somewhere during a multi-line input reevaluates the BEGIN for every new line 18:59
hoelzro yes
I'm only working on low hanging fruit atm =)
psch yes solved or yes still there?
oh, so yes still there
:)
hoelzro if you want to know what I've done vs not: gist.github.com/hoelzro/6bb9aa5163c7f79016ff 19:00
awwaiid still wants MY::repl for that list :) 19:01
hoelzro awwaiid: feel free to fork that gist and send it to me so I can merge it in =) 19:02
awwaiid hoelzro++ # open source life 19:03
uvtc Hi, #perl6. I made a tiny commit earlier to the docs, but then the doc build broke. I didn't think my change would break anything. Anyone know what the cause of the breakage was? 19:04
tony-o zef seems to install from a gitlab repo without any issues, does panda install from a url - is there an easy way to test that without mucking up the module ecosystem? 19:06
SrKeys anyone else doing google codejam in perl 6
?
psch yeah, the gist is impressive
SrKeys idk if anyone here is into code jam
tadzik tony-o: if you feed it a git-like url it will probably install it
tony-o: or used to :P
[Coke] uvtc: one moment. 19:09
tony-o tadzik: hmm, doesn't seem to like that
uvtc Thanks, [Coke]. The Travis report is at <travis-ci.org/perl6/doc/builds/118040250>. That log makes it look like it does an entire new rakudo/moar build just to then build the docs with it.
[Coke] looks like a segfault running make html. 19:10
if I run it locally, it gets past that point, however. 19:11
if the docs get updated, don't worry about it, if it seems like the site doesn't get updated, then we can worry.
uvtc [Coke]: well, the doc I edited was updated, and the site shows the update. Thanks. 19:13
awwaiid hoelzro: well... forking your gist seemed like a good idea, but I have no idea how to PR against it now. gist.github.com/awwaiid/338cc538f660f95ff7a5 19:19
hoelzro awwaiid: I think I'll have to merge them by hand, which is ok
thanks!
awwaiid :) 19:19
tadzik tony-o: ah crap :( 19:20
awwaiid Hotkeys_: I didn't know you could do it in other languages
tadzik tony-o: even if the url starts with "git://"? 19:21
tony-o i'll give it a shot once i finish this pre-build image of moar/p6 for travis 19:23
awwaiid Hotkeys_: ah, any language it looks like. nice
tony-o tadzik: i tried it with https:// 19:24
it looked like it was just searching that package listing for a module with the name 'http ... '
tadzik yeah, the code just checks for leading "git://". Suboptimal 19:25
tony-o i'll give it a go with git://
Xliff How's this for the start of a Match eqv? It's raw since I had to keep the debugging code in, but my simple test case works -- pastebin.com/ct76gh5H 19:57
I'm sure there's a Better Way to Do It, but I'm only 2 perl6 days old.... =) 19:58
moritz Xliff: missing $a.made eqv $b.made
Xliff *sob* 19:59
Adding
Fixed
moritz Xliff: the .list comparison is unreliable
Xliff Yeah, but since Match is comprised of both, that was the best way I could figure out how to do it. 20:00
moritz Xliff: if $a.list is false but $b.list isn't, it returns a match when it shouldn't
Xliff Ah! That I can solve.
psch m: my $m = "abc" ~~ /$<a>=a (b)/; say $m.list; say $m.hash # .list and .hash also aren't exclusive 20:01
camelia rakudo-moar e57e63: OUTPUT«(「b」)␤Map.new((:a(Match.new(ast => Any, list => (), hash => Map.new(()), orig => "abc", to => 1, from => 0))))␤»
moritz Xliff: if you call it as multi sub infix:<eqv> instead of sub MatchCheck, you can recursive into eqv directly
Xliff: $a.list eqv $b.list 20:02
Xliff moritz: That is the eventual plan.
psch ...but maybe i've not been reading closely enough
moritz Xliff: then you don't need to check for truthiness of the lists at all
Xliff OK. 20:03
moritz Xliff: and you can also recurse into $a.hash eqv $b.hash, I think
so the whole thing can be be boiled down to the simple attribute check && $a.list eqv $b.list && $a.hash eqv $b.hash 20:04
Xliff OK. So I overthought the heirarical comparison, then.
moritz the beauty of recursion and multis :-) 20:05
Xliff OK. Updated 20:13
Tests still work. I will try moar tests and see if I can get it to break.
Actually, if this works, I won't need to explicitly reference the array elements at the end... 20:16
Here's a thought. 20:18
Should the following two regexs be equiv?
my regex yyy { ($<t1> = [aa] ) ($<t2> = a) a } ;
my regex zzz { ($<t1> = [aa] ) ($<t2> = a) a } ;
So: 20:19
my $m3 = $string ~~ m:g/<yyy>/;
my $m4 = $string ~~ m:g/<zzz>/;
$m3 eqv $m4 # True or False???
psch Xliff: fwiw, they look textually identical here..? 20:23
well, except for the name 20:24
so, i guess that's a good question... :)
psch hm, but Regex eqv Regex is different than Match eqv Match 20:29
tony-o hi all - i have a nightly build of rakudo (via rakudobrew) being pushed to repo github.com/tony-o/perl6-travis-bin.git - you're welcome to clone and use this repo for travis testing if, like me, you're impatient and don't care about testing your modules on JVM -
see the sample.travis.yml for how to use the repo
psch Xliff: take that to mean that i personally don't have an opinion whether the Regexen themselves should be equivalent, but i do think the Match objects returned against identical Str should be equivalent 20:30
Xliff psch: OK, that means that the Match equivalence test should eleminate the rexexp name from the test, which my current implementation doesn't. 20:32
I would posit that you are correct Regexp yyy and zzz are equivalent, but ($m3 eqv $m4) are not. 20:33
psch m: say ("foo" ~~ my regex baz { .+ }).perl;
camelia rakudo-moar e57e63: OUTPUT«Match.new(ast => Any, list => (), hash => Map.new(()), orig => "foo", to => 3, from => 0)␤»
psch the Match object doesn't contain any reference to the producing regex 20:33
Xliff: ...i'm pretty sure i said almost the exact opposite. the Match objects should be equivalent, but the equivalence of the Regex objects depends on whether the name matters 20:34
Xliff m: $a = "foo" ~~ my regex bas { .+ }); say $a.perl
camelia rakudo-moar e57e63: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ByeYvEIfWH␤Variable '$a' is not declared␤at /tmp/ByeYvEIfWH:1␤------> 3<BOL>7⏏5$a = "foo" ~~ my regex bas { .+ }); say ␤»
psch m: no strict; $a = "foo" ~~ my regex bas { .+ }); say $a.perl 20:35
camelia rakudo-moar e57e63: OUTPUT«5===SORRY!5=== Error while compiling /tmp/M0b2Hcpzjh␤Unexpected closing bracket␤at /tmp/M0b2Hcpzjh:1␤------> 3trict; $a = "foo" ~~ my regex bas { .+ }7⏏5); say $a.perl␤»
Xliff m: ($a = "foo" ~~ my regex bas { .+ }); say $a.perl
camelia rakudo-moar e57e63: OUTPUT«5===SORRY!5=== Error while compiling /tmp/QWfAoZKLiA␤Variable '$a' is not declared␤at /tmp/QWfAoZKLiA:1␤------> 3(7⏏5$a = "foo" ~~ my regex bas { .+ }); say ␤»
Xliff m: (my $a = "foo" ~~ my regex bas { .+ }); say $a.perl
camelia rakudo-moar e57e63: OUTPUT«Match.new(ast => Any, list => (), hash => Map.new(()), orig => "foo", to => 3, from => 0)␤»
Xliff m: (my $a = "foo" ~~ my regex bas { .+ }); say $a.hash
camelia rakudo-moar e57e63: OUTPUT«Map.new(())␤»
Xliff m: (my $a = "foo" ~~ my regex bas { .+ }); say $a.list
camelia rakudo-moar e57e63: OUTPUT«()␤»
Xliff Hmmm....
psch it doesn't capture anything
tony-o zero door handles in this building open upwards, this is a hostile work environment
oops, not meant for this channel 20:36
Xliff m: (my $a = "foo" ~~ my regex bas { [.+ ]}); say $a.perl
camelia rakudo-moar e57e63: OUTPUT«Match.new(ast => Any, list => (), hash => Map.new(()), orig => "foo", to => 3, from => 0)␤»
psch m: no strict; $a = "foo" ~~ my regex bas { $<f>=f (oo) }; say $a.perl
camelia rakudo-moar e57e63: OUTPUT«Match.new(ast => Any, list => (Match.new(ast => Any, list => (), hash => Map.new(()), orig => "foo", to => 3, from => 1),), hash => Map.new((:f(Match.new(ast => Any, list => (), hash => Map.new(()), orig => "foo", to => 1, from => 0)))), orig => "foo", to …»
psch m: no strict; $a = "foo" ~~ my regex bas { $<f>=f (oo) }; say $a.list; say $a.hash
camelia rakudo-moar e57e63: OUTPUT«(「oo」)␤Map.new((:f(Match.new(ast => Any, list => (), hash => Map.new(()), orig => "foo", to => 1, from => 0))))␤»
Xliff OK, that's odd.
The regex name is definitely getting captured in my Match objects
psch the point of note is that the Match object does not know that the Regex it comes from has a name 20:37
Xliff: gist and then m: it?
'cause that'd be interesting :)
Xliff Oh. 20:38
dalek osystem: 7381a1e | tony-o++ | META.list:
flow multiplex testing with full flex
20:39
Xliff m: my $a = "foo"; my regex bas { [.+ ]}; my $m = $a ~~ m/<bas>/; say $m.perl 20:40
camelia rakudo-moar e57e63: OUTPUT«Match.new(ast => Any, list => (), hash => Map.new((:bas(Match.new(ast => Any, list => (), hash => Map.new(()), orig => "foo", to => 3, from => 0)))), orig => "foo", to => 3, from => 0)␤»
Xliff So in the examples I was using the regex is used as a named capture. 20:41
psch m: my $a = "foo"; my regex bas { [.+ ]}; my $m = $a ~~ m/$<foo>=<.bas>/; say $m.perl
camelia rakudo-moar e57e63: OUTPUT«Method 'bas' not found for invocant of class 'Cursor'␤ in block <unit> at /tmp/9ChDRQcRx1 line 1␤␤»
Xliff THAT's why its showing up in my Match objects.
psch hrm, almost :)
m: my $a = "foo"; my regex bas { [.+ ]}; my $m = $a ~~ m/$<foo>=<&bas>/; say $m.perl
camelia rakudo-moar e57e63: OUTPUT«Match.new(ast => Any, list => (), hash => Map.new((:foo(Match.new(ast => Any, list => (), hash => Map.new(()), orig => "foo", to => 3, from => 0)))), orig => "foo", to => 3, from => 0)␤»
psch Xliff: yeah, using a regex as <foo> binds to a named capture. the above example shows one way around that 20:42
Xliff OK. So I mis-stated my test, above.
psch (note that inside a grammar you'd probably use <.bas> instead as in my failed attempt. <&foo> looks up lexicals, while <.foo> looks up methods)
Xliff So $m3 eqv $m4 IS false since different name captures are used. 20:43
psch Xliff: yes, but that obliges you to add a test that binds to a identically named capture and test that those *are* eqv :) 20:44
Xliff m: say ("foo" ~~ my regex baz { .+ }); say ("foo" ~~ my regex bar { .+ });
camelia rakudo-moar e57e63: OUTPUT«「foo」␤「foo」␤»
psch m: my regex baz { .+ }; say "foo" ~~ &baz
camelia rakudo-moar e57e63: OUTPUT«「foo」␤»
Xliff psch: True. And I will have to do that.
psch ^^^ that was the idiom i was thinking of when i said they should be eqv, fwiw 20:45
Xliff But the match objects resulting from your initial example would still be eqv based on what I wrote since the name capture isn't used.
psch which, incidentally, is another bunch of test cases :)
Xliff YAY!
psch Xliff++
Xliff I'll spend more time writing test cases than I did the infix:<eqv> 20:46
*sigh* such is life.
OK 20:49
my $ml1 = $string ~~ my regex y1 { ($<t1> = [aa] ) ($<t2> = a) a };
my $ml2 = $string ~~ my regex y2 { ($<t1> = [aa] ) ($<t2> = a) a };
$ml1 eqv $ml2 #True 20:50
Oh, let me try that other idiom. 20:51
TimToady psch, Xliff: the other reason for the rename is that *nix's uniq doesn't actually do .unique, but .squish 20:52
Xliff TimToady, LOL. Didn't know that.
Hah!
psch: Idiom test also holds true. 20:53
my $ml3 = $string ~~ &yyy;
my $ml4 = $string ~~ &zzz;
$ml3 eqv $ml4 # True
And since matches turn out arrays, let me ditch the [0]s in my test cases and see if they still work. 20:54
Still working, although I am not seeing the say statements I emit in the infix:<eqv> sub as much as I'd expect. 20:56
Xliff Anyone have any more test cases for Match object eqv? 21:29
moritz m: say ('aaa' ~~ /a(..)/) eqv ('aaa' ~~ /a../) 21:35
camelia rakudo-moar e57e63: OUTPUT«False␤»
moritz m: say ('aaa' ~~ /a(..)/) eqv ('aaa' ~~ /a./)
camelia rakudo-moar e57e63: OUTPUT«False␤»
Xliff moritz: You already have Match eqv? 21:39
Xliff Well shucks. 21:43
Match eqv is already in there.
Was a nice excercise in writing, though.
psch m: say ('aaa' ~~ /a(..)/) eqv ('aaa' ~~ /a(..)/)
camelia rakudo-moar e57e63: OUTPUT«True␤»
moritz Xliff: no, it's not there 21:53
Xliff: it's just a fallback from (Any, Any), which gives wrong results 21:54
Xliff So should "('aaa' ~~ /a(..)/) eqv ('aaa' ~~ /a../);" return true? 21:56
Due to capture, I find that hard to believe.
Xliff O. wait. () isn't capture anymore. 21:56
Hmmm... 21:57
Or is it.... Still looks like capture to mer.
s/r\.//
> ('aaa' ~~ /a(..)/) 21:58
「aaa」
0 => 「aa」
> ('aaa' ~~ /a../)
「aaa」
Xliff moritz: Do you have an example where the (Any, Any) fails for Match eqv? 22:00
moritz m: say ('a' ~~ /./) ~~ ('a' ~~ /./) 22:03
camelia rakudo-moar e57e63: OUTPUT«「a」␤»
moritz m: say ('a' ~~ /./) eqv ('a' ~~ /./)
camelia rakudo-moar e57e63: OUTPUT«True␤»
moritz m: say ('a' ~~ /(.)/) eqv ('a' ~~ /(.)/)
camelia rakudo-moar e57e63: OUTPUT«True␤»
moritz hmmm
m: say ('a' ~~ /(.)/) eqv ('ab' ~~ /(.)/)
camelia rakudo-moar e57e63: OUTPUT«True␤»
moritz Xliff: ^^ that should be False 22:04
m: say ('a' ~~ /(.)/) eqv ('b' ~~ /(.)/)
camelia rakudo-moar e57e63: OUTPUT«True␤»
moritz it seems it comparse *only* the captures, but not the root node of the Match
*compare
psch yeah, the one that should be False i definitely agree with. the .orig is different and that should be reflected 22:24
Xliff my $t_im1 = ('aaa' ~~ /a(..)/) eqv ('aaa' ~~ /a../); 22:56
my $t_im2 = ('a' ~~ /(.)/) eqv ('ab' ~~ /(.)/);
$t_im1 = False / $t_im2 = False # my Match eqv implementation 22:57
Ulti m: say [+] 1..9999999999999999 23:00
camelia rakudo-moar e57e63: OUTPUT«49999999999999995000000000000000␤»
Ulti ^ that is really quite fast compared to the more obvious things in Perl 5
not to mention bigint just works too 23:01
List::Util::sum(1..blah) goes nuts on bigger ranges on my laptop and a postfix for loop sum over the range takes ages 23:02
in Rakudo is that compiling down to anything special?
perlawhirl hi perlers 23:09
i asked a question earlier but got no replies. being on aussie time means i'm usually in here when it's quiet
but anyways... 23:10
am i able to rename a method (eg. grep) to something else... or rather, create a method that basically points to grep
perlawhirl it's times like these i need a tumbleweed unicode 23:18
geekosaur I think someone did answer that question at one point, negatively 23:29
there may be something hacky you can do with the MOP
...but I think that mixes in an anonymous role rather than changing the class 23:30
perlawhirl yeah, i have a (probably misguided) design proposal and wanted to see if I could do it in a module first... though by the sounds of it I might not be smart enough :D 23:33
geekosaur: would you mind reading my ramblings and give me your opinion. gist.github.com/0racle/ea0523759e2da15758d4 23:34
geekosaur I'm probably the wrong person to do it. I am not a p6guts expert or anything like that 23:35
perlawhirl but from a user pov, do you think that seems nice 23:36
if it existed, would you use it instead of grep. i think i would, as it reads more like english 23:37
or am i just a weirdo ?
geekosaur I feel like grep is largely a concession to perl5, and there are other mechanisms in perl6 already? but I could be wrong 23:38
perlawhirl perhaps... like i said, i'm probably misguided (and a weirdo :D) 23:39