»ö« 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. |
|||
00:00
nadim joined
|
|||
coreyperry | words <LISP PASCAL APL ADA COBOL FORTH PERL PHP> should be group by distinct letters, i.e [FORTH,ADA],[FORTH,APL],[ADA,COBOL,PHP] ... | 00:02 | |
00:11
patrickz left
00:15
sufrostico left
00:16
nadim left
00:17
firstdayonthejob left
00:19
Skarsnik left
00:29
kid51 joined
|
|||
timotimo | coreyperry: sorry, i don't think i understand | 00:37 | |
what does ADA have in common with FORTH, and with COBOL, but COBOL not with FORTH? | |||
00:41
labster joined
|
|||
timotimo | coreyperry: can you explain how you want those lists to be built? | 00:47 | |
TEttinger | timotimo: they share no letters | 00:50 | |
00:50
[particle] joined
|
|||
TEttinger | ADA uses a different group of 2 letters than any of the 5 in FORTH | 00:50 | |
that's the distinct in the request, I think | |||
00:50
Actualeyes joined
00:51
cdg left
00:52
cdg joined
00:57
cdg left
|
|||
TimToady | what is this ADA of which you speak? I know of a language called Ada, but not language called ADA... | 00:58 | |
01:03
cognominal left
01:05
pochi left,
pochi joined
01:06
kid511 joined
|
|||
TimToady | .oO(Another Damn Acronym) :) |
01:06 | |
01:08
kid51 left
|
|||
timotimo | oh, now i get it | 01:08 | |
so basically out of the powerset you want to filter out only those where bagging the combed combination of the names gives you a set with as many entries as there are letters in the combination | |||
i would type it out | 01:10 | ||
but cat got my hand | |||
MadcapJake` | any idea what node_text_set_with_charef might mean? seems like the doxygen docs are copied from node_text_set (in the library MyHTML) | 01:18 | |
timotimo | t.h8.lv/andshare/IMG_20160316_021713.jpg - hand got by cat | 01:19 | |
MadcapJake` | lol what kind of cat is that? | 01:20 | |
what are the numbers in his ear? o_O | 01:21 | ||
timotimo | it's the regular kind of cat | ||
MadcapJake` | oh, nice :P | 01:22 | |
Hotkeys | Yo | ||
MadcapJake` | very cool coloration, looks like savannah coat | 01:23 | |
timotimo | en.wikipedia.org/wiki/European_Shorthair | 01:24 | |
MadcapJake` | cool | 01:25 | |
01:25
yeahnoob joined
|
|||
timotimo | i'm told "european shorthair" is really just a catch-all term for all kinds of wild cats that aren't really bred selectively | 01:27 | |
01:27
coreyperry left
|
|||
Hotkeys | Oh oops is this #cats | 01:27 | |
timotimo | no, this is patrick! | ||
MadcapJake` | lol | 01:28 | |
01:28
lichtkind joined,
lichtkind left
|
|||
MadcapJake` | what would be the point of storing a strings length? Is that really only important in C or should I maintain the functionality in my wrapper? | 01:28 | |
01:31
justine_o joined
01:41
skids joined
01:58
lucs joined
02:06
kalkin-__ joined
|
|||
AlexDaniel | hmm, where is Tag module? | 02:07 | |
02:09
kalkin-_ left
|
|||
tweakism | MadcapJake`: so that you don't run off the end of it if it fails to be null-terminated and thus commit and invalid memory access or worse. | 02:11 | |
AlexDaniel | hmm there it is github.com/4d47/perl6-tag-helper but it is not in the module directory, hmmm | ||
tweakism: “fails to be null-terminated”? It is either null-terminated or it's not. Am I missing something? | 02:13 | ||
tweakism | AlexDaniel: the case where 'it's not' == when it 'fails to be' | ||
AlexDaniel | tweakism: that is, if you don't trust that it is null-terminated, then why would you trust its length? | ||
tweakism | AlexDaniel: I'm not looking at the API, so it depends. | 02:14 | |
maybe because you allocated a buffer yourself. | |||
but you can operate on a C string just fine if it's not null-terminated and you know the length. | |||
AlexDaniel: obviously you cannot strlen() it to find out | 02:15 | ||
you know this though so why are you asking me? | |||
02:15
justine_o left
|
|||
AlexDaniel | :) | 02:16 | |
02:17
jack_rabbit joined
|
|||
AlexDaniel | github.com/perl6/ecosystem/commit/...a61a2e8066 | 02:18 | |
Yeah. Thank you very much. | 02:19 | ||
I kinda like the fact that it was removed after Christmas… like of course nobody was using it, right? | 02:21 | ||
sorry for crying out loud | |||
02:29
kid511 left
02:38
vendethiel joined
02:39
jameslenz joined
02:47
molaf_ joined
02:51
molaf left
03:02
vendethiel left
|
|||
MadcapJake` | wait so it is important to keep length? but it's only on return and I can gather length inside perl 6 if I need to send something back to the C api | 03:08 | |
03:12
Actualeyes left
|
|||
sortiz | m: my int32 $a = 1; say $a +& 0xfffffffe; | 03:24 | |
camelia | rakudo-moar 8cbb1e: OUTPUT«0» | ||
03:36
cognominal joined
03:37
noganex joined
03:39
noganex_ left
03:47
dj_goku_ left
04:03
AlexDaniel left
04:05
hacst left
04:08
hacst joined
04:17
wamba joined,
daxim left
04:18
daxim joined
04:29
molaf_ left
04:45
cpage_ left
04:46
cpage_ joined
04:48
khw left
04:49
quester joined
04:54
yqt left
04:58
Actualeyes joined
05:14
aindilis left,
cpage_ left,
cpage_ joined
05:16
cpage_ left,
cpage_ joined
05:17
cpage_ left,
cpage_ joined,
wamba left
05:19
cpage_ left
05:22
perlawhirl joined
|
|||
perlawhirl | hi perlers | 05:25 | |
05:27
buharin joined
|
|||
perlawhirl | coreyperry asked earlier about grouping words by distinct letter (ie, no 2 words share a common letter) | 05:27 | |
best i could come up with for now: hastebin.com/rukobuziva.pl | |||
i was thinking of trying to do it with .classify, but things got confusing. | 05:28 | ||
05:30
quester left
|
|||
skids | m: (1,2,3,4).combinations(2..*).say # perlawhirl | 05:52 | |
camelia | rakudo-moar 8cbb1e: OUTPUT«((1 2) (1 3) (1 4) (2 3) (2 4) (3 4) (1 2 3) (1 2 4) (1 3 4) (2 3 4) (1 2 3 4))» | ||
05:56
Cabanossi left
|
|||
perlawhirl | golf'd! | 05:58 | |
05:58
Cabanossi joined
05:59
musiKk_ joined
06:06
sno left
06:08
pierrot left,
pierrot joined,
sno joined
|
|||
perlawhirl | m: for <LISP PASCAL APL ADA COBOL FORTH PERL PHP>.combinations(2..*) -> @w { @w.say if 1 == all @w.join.comb.unique.map:{@w.grep(*.contains: $_)}; } | 06:09 | |
camelia | rakudo-moar 8cbb1e: OUTPUT«(LISP ADA)(LISP FORTH)(PASCAL FORTH)(APL FORTH)(ADA COBOL)(ADA FORTH)(ADA PERL)(ADA PHP)(COBOL PHP)(LISP ADA FORTH)(ADA COBOL PHP)» | ||
perlawhirl | does 'all' exit early on first False? | ||
just out of curiosity | |||
06:11
aindilis joined
|
|||
skids | not necessarily it might thread. | 06:12 | |
06:18
jolts joined,
jolts left
06:19
jolts joined
06:20
sjoshi joined
|
|||
skids | m: say (<LISP PASCAL APL ADA COBOL FORTH PERL PHP>».comb».unique».join).combinations(2..*).grep: { +.join.comb.unique == +.join.comb} # just need to map them back. | 06:24 | |
camelia | rakudo-moar 8cbb1e: OUTPUT«((LISP AD) (LISP FORTH) (PASCL FORTH) (APL FORTH) (AD COBL) (AD FORTH) (AD PERL) (AD PH) (COBL PH) (LISP AD FORTH) (AD COBL PH))» | ||
sortiz | m: dd Map.new(:a<1); dd Map.new((:b<2)); # First fails, seems that Map.new is ignoring its documented *%args :-( | 06:34 | |
camelia | rakudo-moar 8cbb1e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/JO31cCHPQ7Unable to parse expression in quote words; couldn't find final '>' at /tmp/JO31cCHPQ7:1------> 3ew is ignoring its documented *%args :-(7⏏5<EOL> expecting any of: …» | ||
sortiz | m: dd Map.new(:a<1); dd Map.new((:b<2)); # First fails, seems that Map.new is ignoring its documented *%args | ||
camelia | rakudo-moar 8cbb1e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/QwRaQuO33WUnable to parse expression in quote words; couldn't find final '>' at /tmp/QwRaQuO33W:1------> 3ap.new is ignoring its documented *%args7⏏5<EOL> expecting any of: …» | ||
sortiz | m: dd Map.new(:a<1); dd Map.new((:b<2)); | 06:35 | |
camelia | rakudo-moar 8cbb1e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Q_Yo8PQ92FUnable to parse expression in quote words; couldn't find final '>' at /tmp/Q_Yo8PQ92F:1------> 3dd Map.new(:a<1); dd Map.new((:b<2));7⏏5<EOL> expecting any of: …» | ||
sortiz | m: dd Map.new(:a<1); dd Map.new((:b<2>)); # First fails, seems that Map.new is ignoring its documented *%args | ||
camelia | rakudo-moar 8cbb1e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Ky7L6VI6MSUnable to parse expression in quote words; couldn't find final '>' at /tmp/Ky7L6VI6MS:1------> 3ap.new is ignoring its documented *%args7⏏5<EOL> expecting any of: …» | ||
sortiz | m: dd Map.new(:a<1>); dd Map.new((:b<2>)); # First fails, seems that Map.new is ignoring its documented *%args | ||
camelia | rakudo-moar 8cbb1e: OUTPUT«Map.new(())Map.new((:b(IntStr.new(2, "2"))))» | ||
sortiz uff, the third attempt | 06:37 | ||
06:37
bjz joined
06:38
perlawhirl left
|
|||
skids | m: say <LISP PASCAL APL ADA COBOL FORTH PERL PHP>.combinations(2..*).grep: { .join.comb.unique.sort eqv $_».comb».unique.flat.sort } | 06:40 | |
camelia | rakudo-moar 8cbb1e: OUTPUT«((LISP ADA) (LISP FORTH) (PASCAL FORTH) (APL FORTH) (ADA COBOL) (ADA FORTH) (ADA PERL) (ADA PHP) (COBOL PHP) (LISP ADA FORTH) (ADA COBOL PHP))» | ||
06:42
bjz left
06:45
domidumont joined
06:49
domidumont left,
domidumont joined
07:01
buharin left
07:07
bjz joined
07:15
buharin joined
07:17
ufobat joined
07:20
buharin left
07:22
CIAvash joined
07:25
skids left,
domidumont left
07:26
domidumont joined
07:30
nakiro joined,
bjz_ joined
07:31
FROGGS joined,
bjz left
07:38
firstdayonthejob joined
07:39
domidumont1 joined
07:41
domidumont left
07:42
Upasaka left
07:43
Upasaka joined
07:50
kanishka left
07:51
jack_rabbit left
07:53
darutoko joined
07:55
RabidGravy joined
07:58
domidumont1 left
07:59
domidumont joined
|
|||
Ulti | hoelzro just tried out your fancy REPL branch, if you press tab on a blank line you get some unhappy errors followed by a completion to "Any" gist.github.com/MattOates/b80350376b3ba02c8ac7 | 07:59 | |
08:04
domidumont left,
domidumont joined
08:24
avalenn joined
08:26
xinming_ is now known as xinming
08:36
FROGGS left,
wamba joined
|
|||
RabidGravy | boom! | 08:37 | |
08:38
firstdayonthejob left
|
|||
DrForr | My "Intro to Prancer" talk is accepted for YAPC::NA. | 08:38 | |
08:39
zakharyas joined
|
|||
moritz | \o | 08:39 | |
sortiz | \o | 08:40 | |
DrForr, congrats! | 08:41 | ||
m: dd Map.new(:a<1>); dd Map.new((:b<2>)); # First fails, seems that Map.new is ignoring its documented *%args, Bug? | 08:42 | ||
camelia | rakudo-moar 8cbb1e: OUTPUT«Map.new(())Map.new((:b(IntStr.new(2, "2"))))» | ||
DrForr | Thanks. | 08:44 | |
nine | sortiz: documentation bug. Map.new is: method new(*@args) { @args ?? nqp::create(self).STORE(@args) !! nqp::create(self) } | 08:46 | |
08:47
rindolf joined
08:48
fireartist joined
|
|||
sortiz | nine, yep, I see the source, but IMO the documented behavior makes sense. | 08:50 | |
Why force the user to double the parenthesis? | 08:51 | ||
08:52
jkramer joined
|
|||
jkramer | Ahoy | 08:52 | |
DrForr | Speaking on this subject - I'm calling routes via '$route.(|@args)', and I need to add optional arguments to the @args list. I can include them explicitly via '$route.(|@args, :option("al"))' but I'm having trouble figuring out what to push onto the @arg array. | 08:55 | |
08:57
mkz__ left
|
|||
nine | sortiz: because that's the only way for a subclass of Map to have attributes that can be initialized via constructor | 08:58 | |
09:03
zakharyas left
|
|||
sortiz | nine, I see. :-( | 09:10 | |
09:10
dakkar joined
09:12
nadim joined
09:18
Actualeyes left
|
|||
RabidGravy | DrForr, a Pair | 09:23 | |
09:23
mkz_ joined
|
|||
DrForr | Ah, so 'Pair $x = ( option => 'al' ); @args.push($x); $route.(|@args);' - I'll test that later. | 09:25 | |
RabidGravy | yaw | ||
DrForr | Thought I tried that but I was just rambling and needed to get to bed. | ||
RabidGravy | you could probably do it directly | 09:26 | |
09:26
labster left
|
|||
Ulti is compiling Rakudo on a Raspberry Pi 3 | 09:27 | ||
RabidGravy | I ought to get one to go with the rest of the family | 09:28 | |
jkramer | What's the equivalent of my $conf = do 'some-file-with-a-hash.conf'; in P6? | ||
RabidGravy | EVALFILE | ||
jkramer | Thanks! | 09:29 | |
DrForr | I know that (|@args, :option('al')) works as I tried it, but I wanted to add it in a loop rather than one off, so I wanted to ahve something to push onto an array rather than do it as a one-off. | ||
sortiz | m: my %h; %h.push(:a<foo>); %h.push((:b<bar>)); dd %h; # The same problem RabidGravy, Pairs are tricky to pass. | ||
camelia | rakudo-moar 8cbb1e: OUTPUT«Hash %h = {:b("bar")}» | ||
RabidGravy | no, I meant @args.push: (Foo => bar); | ||
sortiz | m: my %h; %h.push(A => 'foo'); %h.push((Foo => 'bar')); dd %h; | 09:30 | |
camelia | rakudo-moar 8cbb1e: OUTPUT«Hash %h = {:Foo("bar")}» | ||
sortiz | Yep, need a List of pairs. | 09:31 | |
DrForr | Ah, that form. Fiddling now. | ||
09:31
labster joined
|
|||
RabidGravy | sortiz, you're missing a crucial detail in the requirement | 09:32 | |
m: my @a = (Foo => "bar"); say @a.perl; @a.push: (Baz => "zub"); say @a.perl | |||
camelia | rakudo-moar 8cbb1e: OUTPUT«[:Foo("bar")][:Foo("bar"), :Baz("zub")]» | ||
RabidGravy | not a Hash | ||
DrForr | foo(|@args); # <-- @args, not hash. | 09:33 | |
Hrm. I'm getting "Too many positionals passed", same error as when I was working on it last night. Let me pack the code into one line. | 09:34 | ||
RabidGravy | oh wait, your sub foo() is expecting named args? | 09:35 | |
sortiz I need sleep | 09:36 | ||
09:36
perlawhirl joined
|
|||
RabidGravy | the |@args flattens it to a list of positionals | 09:36 | |
foo(|%(@args)) if that is the case | 09:38 | ||
09:38
nadim left
|
|||
perlawhirl | .tell skids one character shorter... <LISP PASCAL APL ADA COBOL FORTH PERL PHP>.combinations(2..*).grep({1==all .join.comb.map(->$l {.grep(*.contains: $l)})}) # though arguably less readable | 09:41 | |
yoleaux | perlawhirl: I'll pass your message to skids. | ||
RabidGravy | sortiz, or more coffee | 09:43 | |
sortiz | RabidGravy, Sure (and a less ugly API to bind, ODBC is baroque) | 09:46 | |
09:47
virtualsue joined
09:53
zhmylove left,
zhmylove joined
10:08
virtualsue left
10:10
labster1 joined,
labster left
|
|||
|Tux| | test 20.861 | 10:13 | |
test-t 13.702 | |||
csv-parser 47.597 | |||
rindolf | Hi all. | 10:15 | |
moritz: here? | |||
moritz | rindolf: kinda | 10:16 | |
rindolf | moritz: can I PM You? | ||
moritz | rindolf: sure | ||
rindolf | moritz: OK. | ||
10:16
abraxxa joined
10:18
espadrine joined
10:22
perlawhirl left,
perlawhirl joined
10:25
kalkin-__ left,
perlawhirl left,
dalek left,
perlawhirl joined
10:26
dalek joined,
ChanServ sets mode: +v dalek
10:27
kanishka joined
10:31
luis joined
10:33
frithnanth joined
10:39
kalkin- joined
10:42
domidumont1 joined
10:43
zakharyas joined
10:44
sjoshi left,
domidumont left
|
|||
lizmat | [Tux]: you probably want to post those numbers on #p6dev :-) | 10:45 | |
10:45
virtualsue joined
|
|||
jnthn | lizmat: Something caused a notable slowdown a few days ago...wants hunting down at some point. I'll do it if nobody else gets there first, though want to try and get the heart of the heap snapshot thingy hammered out today | 10:46 | |
(Notable slowdown in those numbers, I mean) | |||
lizmat | jnthn: yeah, we all noticed... I think heap snapshot tool is a better investment at this point :-) | 10:47 | |
10:48
domidumont1 left
10:49
domidumont joined
|
|||
jnthn | lizmat: Well, today is the last day for several where I can have the peace and quiet I need to get it in :) | 10:52 | |
10:56
pmurias joined
11:00
sjoshi joined
|
|||
lizmat | jnthn: fwiw, I feel the slowdown is (also) in parsing, at least of the core settings | 11:00 | |
11:11
labster1 left
11:20
molaf joined
11:23
TEttinger left
11:25
kaare__ joined
11:35
kid51 joined,
sortiz left
11:38
sortiz joined
11:44
pmurias left
11:45
pmurias joined
11:46
kid51 left
11:48
sjoshi left
|
|||
pmurias | any particularly interesting pior work about data flow analysis I should look into (besides the Hoopl library)? | 11:49 | |
12:01
sjoshi joined,
yeahnoob left
|
|||
Woodi | jnthn: do heap shapshot can be (someday) used for backup, or freeze/unfreeze of process ? | 12:03 | |
lizmat | Woodi: afaik, jnthn intends it as a debugging tool | 12:06 | |
12:06
Skarsnik joined
|
|||
Skarsnik | Hello | 12:06 | |
12:07
sjoshi left
|
|||
jnthn | Woodi: No | 12:07 | |
Woodi: It's for memory use profiling, understanding why things don't get collected, etc. | 12:08 | ||
pmurias | isn't serialization something that could be used for freeze/unfreeze? | 12:12 | |
12:16
jkramer left
|
|||
RabidGravy | So I said yesterday that I would look at PortMIDI after PortAudio, which is all cool and groovy, it's actually quite a simple binding, however making the messages in a somewhat usable way is a proper PITA | 12:20 | |
I must have seen into the future when I wrote Util::BitField ;-) | 12:21 | ||
12:30
ely-se joined
12:38
CurtisOvidPoe joined
|
|||
CurtisOvidPoe | Anyone interested in writing a Perl 6 interface for geocoder.opencagedata.com/code? A guy affiliated with it is willing to pay $100 for that. He doesn’t have any user demand or real need, but he’d like to say that they support Perl 6. | 12:39 | |
12:40
FROGGS joined
|
|||
dalek | osystem: 8797fcd | kuerbis++ | META.list: Add Term::Choose::Util to ecosystem See github.com/kuerbis/Term-Choose-Util-p6 Add Term::TablePrint to ecosystem See github.com/kuerbis/Term-TablePrint-p6 |
12:40 | |
osystem: 54b17f9 | RabidGravy++ | META.list: Merge pull request #171 from kuerbis/master Add Term::Choose::Util to ecosystem |
|||
FROGGS | o/ | ||
tadzik | CurtisOvidPoe: sounds interesting to me | 12:41 | |
12:41
skids joined
|
|||
CurtisOvidPoe | Can you drop me an email? I’ll put you in touch with him. He’s a nice guy and like I said, he doesn’t need this, but he think it would be cool to support us. | 12:42 | |
jnthn | Nice | ||
CurtisOvidPoe++ tadzik++ | |||
CurtisOvidPoe | That last line was for your, tadzik :) | ||
tadzik | CurtisOvidPoe: sure, can you PM it to me? | ||
CurtisOvidPoe | tadzik: done. | 12:43 | |
RabidGravy | cool, looks really, really easy: doesn't need anything that isn't there already | 12:44 | |
tadzik | yeah | ||
I bet there'll be some surprises on the way; aren't there always? :P | |||
12:45
skids left
|
|||
RabidGravy | software's like that | 12:45 | |
masak | tadzik: it'd be a real surprise if there were no surprises! | 12:47 | |
tadzik | indeed! | ||
RabidGravy | tadzik, BTW I may have the portmidi binding in a somewhat usable state sometime today, sugaring the creation of the MIDI messages may take a little longer | ||
perlawhirl | There's already a perl5 module, dump it in a pm6 with Inline::Perl5... collect your $100 and dust your hands of :D | ||
tadzik | RabidGravy: oh, awesome | ||
perlawhirl | or you know... just port it | 12:48 | |
tadzik | perlawhirl (IRC): hahaha, that'd be such a cheat though :D | ||
that said, think how awesome would it be if Inline::Perl5 supported pulling POD from the modules and exposed it with .WHY and friends | |||
RabidGravy | I'd actually "black box" it from the spec | ||
tadzik | the api looks really nice | 12:49 | |
I waited for the page to load, repeating the mantra "pleasedon'tbeoauth" over and over | |||
perlawhirl | yeah... that reminds me. the precomp stuff nine and FROGGS sorted out for Inline::Perl5 is so great. it's now a perfectly reasonable option to use Inline::Perl5 even for short running scripts | ||
so | |||
FROGGS++ | |||
thanks | 12:50 | ||
RabidGravy | I've sortakinda implemented enough of OAuth for Webservice::Soundcloud to work | 12:51 | |
I ought to whip it out and make it generally usable as a separate module | 12:52 | ||
or, y'know, someone else could | |||
I'm also in the market for Digest auth if anyone's bored | 12:53 | ||
12:53
domm_ joined
13:04
domidumont left
13:18
Actualeyes joined
13:23
perlawhirl left
|
|||
psch | RabidGravy: fwiw, i think publishing the fork would've been fine. i'd have done the same i did just now then, which is add a README that links your fork | 13:26 | |
on the off-chance that someone stumbles on my repo somehow... :) | |||
13:26
pmurias left
|
|||
RabidGravy | :) Hope it meets your expectations | 13:27 | |
psch | prior experience with build scripts made me dislike disappearing git repo | ||
well, if a precomputed sine barely works i think i'll have to wait for a few more opts :) | 13:29 | ||
but yeah, short on time and brain space anyway, soo... | 13:30 | ||
RabidGravy | it may be possible that at some point in the near future the array operations may be fast enough | 13:31 | |
for instance some cursory benchmarks indicate that the CArray constructor is 20% faster with nums | 13:35 | ||
13:35
domidumont joined
|
|||
RabidGravy | and the github.com/rakudo/rakudo/commit/e8bc151d27 promises some more good things | 13:37 | |
13:39
pmurias joined
13:42
CIAvash left
13:50
tweakism left
|
|||
psch | m: printf "%d", Mu.new | 13:56 | |
camelia | rakudo-moar e8bc15: OUTPUT«X::TypeCheck::Binding exception produced no message» | ||
psch | m: sub f(*@a) { }; f Mu.new | ||
camelia | ( no output ) | ||
psch | m: sub f($, *@a) { }; f 1, Mu.new | ||
camelia | ( no output ) | ||
psch | m: sprintf "%d", Mu | 13:58 | |
camelia | rakudo-moar e8bc15: OUTPUT«Type check failed in binding $x; expected Any but got Mu (Mu)» | ||
psch | m: sprintf "%d", Mu.new | ||
camelia | rakudo-moar e8bc15: OUTPUT«X::TypeCheck::Binding exception produced no message» | ||
psch | yeah i don't get that | ||
m: use nqp; nqp::p6box_s(Mu) | |||
camelia | rakudo-moar e8bc15: OUTPUT«Cannot unbox a type object in block <unit> at /tmp/tv7FWpor8w line 1» | ||
psch | m: use nqp; nqp::p6box_s(Mu.new) | 13:59 | |
camelia | rakudo-moar e8bc15: OUTPUT«This type cannot unbox to a native string in block <unit> at /tmp/4q8Tut3vG_ line 1» | ||
CurtisOvidPoe | For those who didn’t see my Perl 6 “Why People Are So Excited” talk at FOSDEM, it’s online now: www.youtube.com/watch?v=hR9UdvxMAbo First three minutes of audio are rather messed up, but then get fixed. | 14:00 | |
perlpilot | CurtisOvidPoe++ watched it this morning while eating breakfast. Good talk! | 14:01 | |
psch | hrm. probably something about how it gets passed down to the NQP-level impl through QASTOperationsMAST... | ||
perlpilot | CurtisOvidPoe: now if you could give that talk at a *bunch* of events, that would be awesome ;) | 14:02 | |
El_Che | it's a great talk | ||
psch | CurtisOvidPoe: ooc, who was the target of the finger-pointing and "shut up" at the start? :) | 14:04 | |
CurtisOvidPoe | psch: I don’t remember, sorry. | ||
14:05
skids joined
|
|||
psch | heh, no worries :) | 14:05 | |
14:07
wamba left,
lucs left,
lucs joined
|
|||
Azry | is there a reason why on every module i read on modules.perl6.org, noone uses "BUILD" and "BUILDALL". everyone uses "multi method new" for object construction | 14:08 | |
RabidGravy | sound like 32 bit foldover at the beginning, no getting back from that | ||
14:08
wisti joined
|
|||
Azry | i'm struggling to find good examples | 14:08 | |
RabidGravy | Azry, you didn't look hard enough | 14:09 | |
moritz | Azry: because the module authors all hate subclassing, presumably | ||
14:10
nakiro left
|
|||
Azry | okay =) i'll continue searching there x) thanks | 14:10 | |
RabidGravy | github.com/jonathanstowe/Audio-Por...io.pm#L887 | ||
moritz | Azry: pro tip: git clone github.com/moritz/perl6-all-modules; cd perl6-all-modules; git grep 'method BUILD' | 14:11 | |
masak | moritz++ # perl6-all-modules | 14:12 | |
RabidGravy | github.com/jonathanstowe/Audio-Enc...3.pm#L1301 | ||
14:12
spintronic joined
|
|||
Azry | hanks =) i'll try these | 14:13 | |
14:13
ely-se left
|
|||
RabidGravy | but you're probably better off just asking the question rather than guessing by looking at other peoples code | 14:13 | |
moritz | .tell DrForr your module perl6-ANTLR4 has .precomp files under version control. Please git rm -r --fached .precomp && echo .precomp >> .gitignore | ||
yoleaux | moritz: I'll pass your message to DrForr. | ||
RabidGravy | oh, I've so done that before | 14:14 | |
moritz | also, if you have feedback on how to improve doc.perl6.org/language/objects#Obje...nstruction that would be appreciated :-) | ||
BUILDALL seems not to be in much use | 14:15 | ||
just two usages in perl6-all-modules | 14:16 | ||
RabidGravy | I've never used it | ||
Azry | I'm trying to figure out how to create an inherited class with a different constructor for different arguments | 14:18 | |
14:18
salva_ joined
|
|||
Azry | i don't quite yet see how to do it =( if you want a gist, i'll be happy to provide =) | 14:19 | |
moritz | Azry: please do | ||
Azry: and please use named arguments only, that'll make your life much easier | |||
Azry: and that of anybody who wants to subclass your classes | |||
diakopter | .u CHEESE | 14:20 | |
yoleaux | No characters found | ||
RabidGravy | Azry, in summary: | 14:21 | |
m: class Foo { multi submethod BUILD() { say "no args"; } multi submethod BUILD(:$foo!) { say "args"; } } Foo.new; Foo.new(foo => 1); | 14:22 | ||
camelia | rakudo-moar e8bc15: OUTPUT«5===SORRY!5=== Error while compiling /tmp/PSveIfr8mIStrange text after block (missing semicolon or comma?)at /tmp/PSveIfr8mI:1------> 3lti submethod BUILD() { say "no args"; }7⏏5 multi submethod BUILD(:$foo!) { say "ar expecting an…» | ||
TimToady | .oO("No cheese, Grommit. Not a bit in the house!") |
||
RabidGravy | m: class Foo { multi submethod BUILD() { say "no args"; } multi submethod BUILD(:$foo!) { say "args"; } }; Foo.new; Foo.new(foo => 1); | ||
camelia | rakudo-moar e8bc15: OUTPUT«5===SORRY!5=== Error while compiling /tmp/UNDg2K9OYKStrange text after block (missing semicolon or comma?)at /tmp/UNDg2K9OYK:1------> 3lti submethod BUILD() { say "no args"; }7⏏5 multi submethod BUILD(:$foo!) { say "ar expecting an…» | ||
RabidGravy | m: class Foo { multi submethod BUILD() { say "no args"; }; multi submethod BUILD(:$foo!) { say "args"; } }; Foo.new; Foo.new(foo => 1); | ||
camelia | rakudo-moar e8bc15: OUTPUT«no argsargs» | ||
RabidGravy | I hate that | ||
14:22
spintronic left
|
|||
RabidGravy | (the forgetting the semicolon that is, not BUILD) | 14:22 | |
14:25
salva_ left
14:26
virtualsue left
|
|||
Azry | i was gonna send this : gist.github.com/anonymous/6e111a1914dfc938c644 but i might rethink it to use name arguments only =) | 14:27 | |
RabidGravy: is your class Foo is inherited, how do you pass arguments to the inherited function from the build method (like you would with callwith from buildall) ? | 14:30 | ||
*if your [...] sorry | |||
moritz | Azry: if you use named arguments for new, they are passed to BUILD too | 14:32 | |
14:36
spintronic joined,
musiKk_ left
14:38
nakiro joined
14:41
nadim joined
14:43
spintronic left
|
|||
RabidGravy | and passed to the BUILD of all the sub-classes | 14:44 | |
Azry | shouldnt this code work then ? class IO::Pty is IO::Handle { multi submethod BUILD() { say "no args"; } }; say IO::Pty.new.gist; say IO::Pty.new(path => '/dev/null').gist; | ||
path should be passed for initialization to the inherited method and the cas without argument should be caught by the local build ? i don't know x) | 14:45 | ||
moritz | what do you mean by "caught"? | 14:46 | |
14:46
lapieh joined
|
|||
moritz | methods ignore extra named arguments, so nothing in there would cause an exception | 14:46 | |
RabidGravy | it appears to "work" | 14:47 | |
14:47
nadim left
|
|||
moritz | if you want to enforce the presence of that argument in a subclass, you can make it mandatory: submethod BUILD(:$path!) { } | 14:47 | |
14:49
spintronic joined
14:50
maybekoo2 joined
14:59
zakharyas left
|
|||
Azry | alright i think i understand now the root of what confused me : IO::Handle.new.gist; gives me a warning wheras IO::Handle.new.perl; doesn't | 15:00 | |
hoelzro | o/ #perl6 | ||
15:00
Skarsnik left
|
|||
RabidGravy | yeah, LTA but it's when it tries to print the path | 15:00 | |
hoelzro | Ulti: thanks for trying it, I'll have a look! | 15:01 | |
RabidGravy | also if you add attributes to your subclass and you want to see them with .gist or .perl and the super-class provides its own .perl or .gist then you will have to over-ride | 15:03 | |
which is what happens in this case | |||
Azry | OK. I understand that now. But maybe the cas in which $!path is empty in method gist/perl in Handle.pm should be considered ? | 15:04 | |
masak | fun fact gleaned from perl6-all-modules: there are exactly 2 uses of `CHECK { ... }` in the ecosystem | ||
15:06
spintronic left
|
|||
moritz | Tux/CSV/lib/Text/CSV.pm and grondilu/openssl/lib/SSL/Digest.pm | 15:07 | |
psch | $ ./perl6-m -e'printf "%d", 0^1'|& less | 15:08 | |
Cannot sprintf type (Junction) | |||
as X::AdHoc, currently | |||
note sure we want that typed specifically, but i could see X::TypeCheck::Argument | |||
s/note/not/ | |||
well, and minus the parenthesis for the type object :) | 15:09 | ||
RabidGravy | well it's better than the previously quite confusing error | ||
:) | |||
15:10
cbk left
15:12
Khisanth left
|
|||
psch | ...now for all the other directives | 15:14 | |
unfortunately i don't really see a way to make that DRYer :/ | |||
m: printf "%f", 0^1 | |||
camelia | rakudo-moar e8bc15: OUTPUT«cannot numify this» | ||
psch | ah, that's something i suppose | ||
m: printf "%d", 0^1 | |||
camelia | rakudo-moar e8bc15: OUTPUT«P6opaque: get_boxed_ref could not unbox for the representation '20'» | ||
15:18
woodruffw joined
15:19
brabo left
|
|||
Juerd | In my Perl 5 work I keep running into what I could have solved with an 'except' operator in Perl 6. Frustrating. | 15:20 | |
sub infix:<except>(@list, $exception) { @list.grep: * !~~ $exception } | |||
15:20
kanishka left
|
|||
Juerd | m: sub infix:<except>(@list, $exception) { @list.grep: * !~~ $exception }; say ^10 except 5 | 15:20 | |
camelia | rakudo-moar e8bc15: OUTPUT«(0 1 2 3 4 6 7 8 9)» | ||
moritz | Juerd: it's often the small things that annoy me the most in p5; like having to repeat the name of named arguments (name => $name instead of :$name) | 15:21 | |
Juerd | Of course, I can have my sub except { my ($aref, $exception) = @_; ... } | 15:22 | |
But passing a reference, etc, it all seems like so much work once you've used Perl 6 a bit. | |||
15:26
brabo joined
|
|||
moritz | aye | 15:26 | |
15:27
Khisanth joined
15:30
cdg joined
|
|||
nemo | wow. no zoffix still | 15:32 | |
tadzik | hmm, I wonder how feasible would it be to make everything in JSON::Unmarshal lazy | 15:34 | |
it takes 0.17 seconds to unpack an example API resopnse from OpenCageData | 15:35 | ||
which is not that bad, since there is also latency from actually downloading it too, which mask this a bit :P | |||
15:40
itaipu joined
15:42
tweakism joined
15:45
khw joined
|
|||
|Tux| | moritz that CHECK is essential in CSV | 15:46 | |
masak | |Tux|: yes, I gathered | 15:47 | |
psch | RabidGravy: gist.github.com/peschwa/b7449b286f5beb194a5e how's that look to you? | 15:51 | |
RabidGravy | works for me :) | 15:52 | |
psch | that should work for everything that can't be unboxed (or *ified) to the type matching the directive as well | 15:53 | |
m: class A { }; printf "%d", A.new | |||
camelia | rakudo-moar e8bc15: OUTPUT«Method 'Int' not found for invocant of class 'A'» | ||
psch | ah, those work there already, hmm | ||
psch checks how that looks locally | |||
15:54
fireartist left
|
|||
psch | yeah, that'd also get caught in my changes... | 15:55 | |
that actually makes this a tad more complicated :/ | |||
ah, no, it still tries e.g. .Int, but fails differently | 15:56 | ||
i think i like that | |||
15:57
abraxxa left
|
|||
psch | m: sprintf "%d", 1..* # this throws "Cannot (s)printf a lazy list", too | 15:57 | |
camelia | rakudo-moar e8bc15: OUTPUT«Cannot .elems a lazy list in block <unit> at /tmp/CgLfsnMvAe line 1Actually thrown at: in block <unit> at /tmp/CgLfsnMvAe line 1» | ||
psch | well, instead of what it does in nom right now | ||
ufobat | FROGGS, are the slides from your perl6 einführungs talk online somewhere? | 16:02 | |
FROGGS | ufobat: can you read odf files? | 16:05 | |
ufobat | odf is libreoffice? i can | 16:06 | |
FROGGS | aye | ||
ohh, it is odp actually | 16:07 | ||
ufobat | yeah, odf would be awesome! i missed the talk and i cant wait for Steffen getting the videos done :) | ||
FROGGS | I misremembered | ||
dunno if the slides help that much :o) | |||
ufobat | oh :-( | 16:08 | |
FROGGS | act.yapc.eu/gpw2016/talk/6502 | ||
ufobat | did you just upload them? i could swear i didnt see then this morning | 16:09 | |
thanks! | |||
FROGGS | I just did, yes | ||
16:11
itaipu left,
sortiz left
|
|||
ufobat | thank you :) | 16:14 | |
16:15
Begi joined
16:26
pmurias left
|
|||
stmuk_ | 6502! | 16:27 | |
16:30
zacts left
|
|||
geekosaur | somehow I do not expect to see rakudo on apple ][ :p | 16:30 | |
masak | m: sub postfix:<!>(Int $n) { $n ~ "!" }; say 6502! | ||
camelia | rakudo-moar ad1928: OUTPUT«6502!» | ||
stmuk_ | ah it uses the "sweet64" API | 16:31 | |
more seriousily there appears to be a real java port VM02 :O | 16:34 | ||
16:36
yqt joined
|
|||
masak | m: from-json("42") | 16:38 | |
camelia | rakudo-moar ad1928: OUTPUT«Invalid JSON: 42 in block <unit> at /tmp/KpQHqHBsVB line 1» | ||
masak | this seems to be counter to ECMA-404: "A JSON text is a sequence of tokens formed from Unicode code points that conforms to the JSON value grammar." | 16:39 | |
www.ecma-international.org/publicat...MA-404.pdf | |||
in other words, it's not just about objects and arrays; numbers, strings, `true`, `false`, and `null` are also valid JSON documents | 16:40 | ||
masak submits rakudobug | |||
16:42
nakiro left
16:43
maybekoo2 left
|
|||
tadzik | masak++ | 16:43 | |
masak | classical rookie mistake #42: rewarding masak's nitpicking :P | 16:44 | |
masak .oO( first sign of madness: referring to yourself in the third person... ) | 16:45 | ||
cfedde | that' #42? | ||
ah contextual. in other contexts rule 42 is "bring a towel." | 16:46 | ||
masak | :) | 16:47 | |
no, actually Rule 42 is "No one shall speak to the Man at the Helm" | 16:48 | ||
ufobat | how do i get a array from a list? I've got an @array and when do a my @p = @array.permutations; how "work" with the different permutations in @p, e.g. i want to append something on each permutation | 16:49 | |
masak | m: my @a = 1, 2, 3; .say for @a.permutations | 16:50 | |
camelia | rakudo-moar ad1928: OUTPUT«(1 2 3)(1 3 2)(2 1 3)(2 3 1)(3 1 2)(3 2 1)» | ||
16:50
pmurias joined
|
|||
masak | m: my @a = 1, 2, 3; for @a.permutations -> $p { say [$p.Slip, "!"] } | 16:51 | |
camelia | rakudo-moar ad1928: OUTPUT«[1 2 3 !][1 3 2 !][2 1 3 !][2 3 1 !][3 1 2 !][3 2 1 !]» | ||
masak | ufobat: like that? | ||
psch | m: my @a = (1,2,3).permutations. map: { [$_] }; @a[0].push: "foo"; say @a.perl | 16:52 | |
camelia | rakudo-moar ad1928: OUTPUT«[[1, 2, 3, "foo"], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]» | ||
masak | m: my @a = (1,2,3).permutations>>.Array; @a[0].push: "foo"; say @a.perl | 16:53 | |
camelia | rakudo-moar ad1928: OUTPUT«[[1, 2, 3, "foo"], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]» | ||
psch | right, that's cleaner | ||
16:53
woodruffw left
|
|||
masak | I blame tadzik for rewarding my nitpicking :P | 16:54 | |
cfedde | nitpicking in language design is a virtue | ||
tadzik | wait for my reaction gif! | 16:55 | |
masak .oO( ain't nobody got time for that ) | |||
16:55
Begi left
|
|||
tadzik | gifrific.com/wp-content/uploads/201...-panda.gif | 16:55 | |
masak | just the URL is funny :D | ||
16:55
perl6newbee joined
|
|||
tadzik | it serves as both a spoiler and a time-saver for those who've seen it | 16:56 | |
masak | haha | ||
ufobat | thanks both of you :) | 16:57 | |
is .Array something like a cast? | 16:58 | ||
16:58
woodruffw joined,
woodruffw left
|
|||
masak | yes | 16:58 | |
there's lots of such methods -- they're usually the easiest way to convert values | |||
16:59
woodruffw joined
|
|||
tadzik | ...I'm finding a dir called "FakeDir" in my projects | 17:00 | |
.precomp is inside | |||
but it's actually a real dir! | |||
ufobat | where is the documentation about those casts? | 17:01 | |
masak | probably not in a single place | 17:04 | |
I also suspect that we could have more of those methods than we currently do | |||
psch | note that they're not casts like typecasts in C or Java. as in, not an explicit language feature, but part of the CORE library and in the end normal methods | 17:05 | |
masak | aye -- suggestively named methods | ||
FROGGS | some of these methods are implemented on type Any some on type Cool | 17:06 | |
and that's where these are documented I guess | |||
bbl | |||
17:06
FROGGS left
|
|||
masak tries to do a conversion which fails, and fails -- and is reluctantly impressed :) | 17:07 | ||
ufobat | the reason why i didnt find it was on docs.perl6.org when you for example type down "recv" you find "Method: recv" and then you get IO::Socket.recv but when you type down "Array" you dont get any method. the class Array and other stuff though | 17:09 | |
17:11
maybekoo2 joined
|
|||
stmuk_ | tadzik: maybe related to github.com/perl6/doc/commit/f306df...0af347eb0c or similar elsewhere? | 17:11 | |
17:12
vendethiel joined
|
|||
RabidGravy | can anyone think of a succinct way of doing: | 17:18 | |
m: sub mask(*@a) { my int $a = 0; for @a -> $i { $a +|= ( 1 +< $i ) }; $a }; say mask(2,3) | |||
camelia | rakudo-moar ad1928: OUTPUT«12» | ||
RabidGravy | given the @a will be values 0 .. 15 | ||
psch | m: sub mask(*@a) { [+|] @a.map( 1 +< * ) }; say mask(2,3) | 17:19 | |
camelia | rakudo-moar ad1928: OUTPUT«12» | ||
17:20
shadowpaste left
|
|||
RabidGravy | oook! | 17:20 | |
17:21
frithnanth left
|
|||
RabidGravy | cheers that's better | 17:22 | |
psch | alternatively it might read nicer as [email@hidden.address] 1 +< * ).reduce( &[+|] )', if you don't want to front-load the reduce op | 17:24 | |
stmuk_ | actually bin/p6doc is a script and won't get precomped anyway | 17:25 | |
not sure what happens with perl6 --doc however | 17:26 | ||
17:28
shadowpaste joined
|
|||
Azry | Is there a perl6 alternative to perl5 IO::Handle->new_from_fd ? | 17:28 | |
don't see any in IO::Handle class | 17:29 | ||
17:29
dakkar left
|
|||
ugexe | look at nqp's ops | 17:31 | |
Azry | i was afraid i would have to dive in that =) is there some kind of documentation on nqp (i don't even really know what it is yet) | 17:32 | |
17:33
lapieh left
|
|||
psch | m: sub mask(*@a) { [+|] do (1 +< $_) for @a }; say mask(2,3) # not sure why this doesn't work... | 17:33 | |
camelia | rakudo-moar ad1928: OUTPUT«WARNINGS for /tmp/0oTyjnuRxx:Useless use of "+<" in expression "1 +< $_" in sink context (line 1)12» | ||
psch | i mean, it does apparently | ||
ugexe | github.com/perl6/nqp/blob/master/d...s.markdown | ||
psch | but why does it complain about the sinkage? | 17:34 | |
false positive? | |||
Azry | ugexe: thanks ;) | ||
ugexe | is it `do`ing the result of the (xxx for @a) or each item of @a? | ||
17:35
wamba joined
|
|||
psch | m: sub mask(*@a) { [+|] 1 +< $_ for @a }; say mask(2,3) | 17:35 | |
camelia | rakudo-moar ad1928: OUTPUT«Nil» | ||
psch | "do" makes statement mods fit in statement | ||
Hotkeys | ?p6> m: sub mask (*@a) { [+|] (1 +< $_ for @a) }; say mask(2, 3) | ||
psch | (which is clearly a botchy and Perl6::Grammar-reliant explanation) | 17:36 | |
Hotkeys | Er | ||
Wrong command | |||
Can someone do that with m: | |||
Its a pain on mobile | |||
psch | m: sub mask (*@a) { [+|] (1 +< $_ for @a) }; say mask(2, 3) | ||
camelia | rakudo-moar ad1928: OUTPUT«WARNINGS for /tmp/Af1LYgZLYv:Useless use of "+<" in expression "1 +< $_" in sink context (line 1)12» | ||
Hotkeys | Weird | ||
Why does it sink | |||
ugexe | m: sub mask(*@a) { do [+|] do { (1 +< $_) } for @a }; say mask(2,3) | ||
camelia | rakudo-moar ad1928: OUTPUT«(4 8)» | ||
RabidGravy | I'm going with the explicit .map ... .reduce one | 17:37 | |
ugexe | hmm | ||
psch | fwiw, it looks like a false positive to me | 17:38 | |
m: my @a = ^5; say do 1 +< $_ for @a | |||
camelia | rakudo-moar ad1928: OUTPUT«(1 2 4 8 16)» | ||
psch | m: my @a = ^5; [+|] do 1 +< $_ for @a | ||
camelia | rakudo-moar ad1928: OUTPUT«WARNINGS for /tmp/VcLqX11IFE:Useless use of "+<" in expression "1 +< $_" in sink context (line 1)» | ||
psch | m: &[+|].signature.perl.say | 17:39 | |
camelia | rakudo-moar ad1928: OUTPUT«:(Mu $?, Mu $?)» | ||
psch | hrm | ||
m: &prefix:<[+|]>.signature.perl.say | |||
camelia | rakudo-moar ad1928: OUTPUT«:(+ is raw)» | ||
psch | m: &say.signature.perl.say | ||
camelia | rakudo-moar ad1928: OUTPUT«:(| is raw)» | ||
psch | m: sub f(+ is raw) { }; f do $_ for ^5 | 17:40 | |
camelia | ( no output ) | ||
psch | so not single arg rule, apparently | ||
17:40
SCHAAP137 joined
17:45
bitmap joined,
zakharyas joined,
pmurias left
17:51
zakharyas left
17:58
woodruffw left
18:03
woodruffw joined,
woodruffw left,
woodruffw joined,
woodruffw left,
woodruffw joined
|
|||
Azry | There is no method to manipulate file descriptors, even in nqp ops | 18:05 | |
18:07
vendethiel left
|
|||
Azry | and implementing one seems like i would have to work on moarvm/jvm is that right ? looks one step harder :o | 18:07 | |
18:08
domidumont left,
firstdayonthejob joined
|
|||
ugexe | manipulate how | 18:12 | |
Azry | i have a file descriptor, i want to create a IO::Handle | 18:13 | |
tadzik | stmuk: ah, might be! So that'd be p6doc's fault for not cleaning it up | 18:14 | |
18:20
labster joined
|
|||
ugexe | yeah im not seeing a way to go from descriptor to handle from a cursory glance, although handle to descriptor appears to be doable | 18:23 | |
18:24
labster left
18:25
labster joined,
labster left
|
|||
perlpilot | fdopen should be in libc, just figure out how to get from a FILE* to an IO::Handle and with a dash of NativeCall, you're all set. :) | 18:25 | |
18:26
spider-mario joined
|
|||
Azry | yeah it thought about it, but it doesn't look clean =) is there any way to make a request for such things looks like cross project : MoarVM/JVM/NQP/Rakudo | 18:27 | |
i can proably do the rakudo implementation but nqp/VMs is still out of reach to me | 18:28 | ||
ufobat | how do i flat the thing.. i want list of list, whereas the inner list is a e.g. 1,1,x perl6 -e 'my @foo = [(1,1), [2,2]]; my @bar = <x y>; my @cross = @foo X @bar; for @cross { say .Array.flat }' | 18:29 | |
RabidGravy | linenoise anyone? | 18:30 | |
grep '#define' /usr/include/portmidi.h | grep FILT | sed -e 's/#define PM_FILT_//' | perl6 -pe '$_ ~~ s/^(\w+)/{ $0.lc.tc }/; $_ ~~ s:g/\<\</+</; $_ ~~ s/_(.)/{$0.tc }/; $_ ~~ s/^(\w+)\s+\(/$0 => (/; $_ ~~ s:g/\|/+|/; $_ ~~ s/$/,/' | 18:31 | ||
tadzik | :D | ||
psch | ufobat: you have [[1,1],[2,2]] and <x y> and want to turn that in [[1,1,"x"],[2,2,"y"]]? | 18:32 | |
RabidGravy | I probably could have typed it quicker than that | 18:33 | |
skids | m: my @foo = [(1,1), [2,2]]; my @bar = <x y>; my @cross = @foo X @bar; for @cross { say $_».list.flat } | ||
camelia | rakudo-moar ad1928: OUTPUT«(1 1 x)(1 1 y)(2 2 x)(2 2 y)» | ||
yoleaux | 09:41Z <perlawhirl> skids: one character shorter... <LISP PASCAL APL ADA COBOL FORTH PERL PHP>.combinations(2..*).grep({1==all .join.comb.map(->$l {.grep(*.contains: $l)})}) # though arguably less readable | ||
ufobat | psch, no, i want [[1,1,y] [1,1,y], [2,2,x], [2,2,y]] | 18:34 | |
18:35
Ven joined
18:36
salva joined
|
|||
skids | m: my @foo = [(1,1), [2,2]]; my @bar = <x y>; my @cross = @foo X @bar; say [ $_».list.flat.Array for @cross ] | 18:36 | |
camelia | rakudo-moar ad1928: OUTPUT«[[1 1 x] [1 1 y] [2 2 x] [2 2 y]]» | ||
psch | m: my @foo = [(1,1), [2,2]]; my @bar = <x y>; my @cross = @foo X @bar; for @cross { $_ = $_».list.flat.Array }; say @cross.perl # and with assignment | 18:37 | |
camelia | rakudo-moar ad1928: OUTPUT«[[1, 1, "x"], [1, 1, "y"], [2, 2, "x"], [2, 2, "y"]]» | ||
psch | i'm pretty sure that's somewhat the long way around, though... | ||
18:38
MadcapJake left
|
|||
ufobat | whe do i need to use the » on the $_ inside the loop? the $_ is just a List, when when i loop over the elements (thats what i think » is doing) and bring them to a list to flat it? *confused* | 18:39 | |
or why is simply .flat not working? | |||
skids | $_ is a list of (Array, item) | ||
18:40
yqt left
|
|||
skids | Array.flat does not "work" by design. | 18:40 | |
Because Arrays pretect their internal elements from being flattened. | |||
(Lists do not) | |||
Woodi | damn, soon compilers will need to emit FPGA programs www.embeddedrelated.com/showarticle/195.php?1 ;) | 18:41 | |
DrForr | RabidGravy: Got the optional stuff working, there's a possible issue in the URI module. | 18:42 | |
yoleaux | 14:13Z <moritz> DrForr: your module perl6-ANTLR4 has .precomp files under version control. Please git rm -r --fached .precomp && echo .precomp >> .gitignore | ||
ugexe | augment class Array { method flatter-damnit(*@_) { @_.flatmap(*.flat) }; }; | ||
psch | m: sub f(@a is copy, $b) { @a.push: $b }; my @a = [1,1],[2,2]; my @b = <x y>; my @cross = @a X[&f] @b; say @cross.perl # somewhat cheating... :S | ||
camelia | rakudo-moar ad1928: OUTPUT«[[1, 1, "x"], [1, 1, "y"], [2, 2, "x"], [2, 2, "y"]]» | ||
DrForr | Ah, thanks. | ||
18:42
MadcapJake` left
|
|||
RabidGravy | Harr! | 18:43 | |
masak | Woodi: you say that as if it's a bad thing | ||
ufobat | skids, but in this example perl6 -e 'my @foo = [(1,1), [2,2]]; my @bar = <x y>; my @cross = @foo X @bar; for @cross { say $_.WHAT; say $_[0].WHAT; say "...." }' the first iteration in the for @cross, everything is a list | 18:44 | |
shouldnt $_.flat be the same like in perl6 -e 'say ((1,1), 2).flat' | |||
skids | my @foo = [(1,1), [2,2]]; my @bar = <x y>; my @cross = @foo X @bar; for @cross { say $_.perl } | 18:45 | |
m: my @foo = [(1,1), [2,2]]; my @bar = <x y>; my @cross = @foo X @bar; for @cross { say $_.perl } | |||
camelia | rakudo-moar ad1928: OUTPUT«$($(1, 1), "x")$($(1, 1), "y")$($[2, 2], "x")$($[2, 2], "y")» | ||
ufobat | istn that a list with a list in it plus a "x" | ||
psch | m: say ([1,1],2).flat; say ((1,1),2).flat | ||
camelia | rakudo-moar ad1928: OUTPUT«(1 1 2)(1 1 2)» | ||
psch | m: say [[1,1],2].flat; say [(1,1),2].flat; | 18:46 | |
camelia | rakudo-moar ad1928: OUTPUT«([1 1] 2)((1 1) 2)» | ||
skids | The first two are the second two are lists with Array, Str | ||
DrForr | multi GET('/post', Int $y, Int $m, Str :$format ) is route {} # matches '/post/2015/02?format=JSON'. | ||
RabidGravy | DrForr++ | 18:47 | |
skids | (And also note that the list in the first two is prtected itself by a scalar) | ||
ufobat | Array, Str? why? say $_[0].WHAT; sais (List) | ||
psch | m: say ([1,1],"x")[0].WHAT | ||
camelia | rakudo-moar ad1928: OUTPUT«(Array)» | ||
skids | m: say ($(1,1),2).flat | 18:48 | |
camelia | rakudo-moar ad1928: OUTPUT«((1 1) 2)» | ||
ufobat | its the scalar then!? | ||
skids | It's always Scalars. | ||
psch | m: say ([(1,2), 3], ((1,2),3)).flat | ||
camelia | rakudo-moar ad1928: OUTPUT«((1 2) 3 1 2 3)» | ||
skids | Just with Array, the Scalars are automatic (and sometimes invisible when you print them) | ||
n1cky | is anyone still working on Perl6 -> LLVM? | 18:49 | |
18:49
bakedb left
|
|||
ufobat | but i ment the ((1,2), 3) vs ($(1,2), 3) is because the $() protects them as Arrays would protect them? | 18:49 | |
skids | Yes, you are getting it. | 18:50 | |
ufobat | does this only apply to .flat or .. what kind of modifications are not working? | ||
18:51
Ven_ joined
|
|||
skids | .flat, and single-argument-rule, and binding operations are affected. | 18:52 | |
18:52
Ven left
|
|||
ufobat | thank you very much. i am going to dig deeper into the documentation now ;) | 18:53 | |
skids | doc.perl6.org/type/Scalar may help | ||
ufobat | :) | ||
18:55
Ven_ left
18:57
CIAvash joined
18:59
woodruffw left
19:02
cdg left
|
|||
masak | n1cky: things people have been saying on this channel over the years make me suspect Perl 6 -> LLVM would be Very Hard to pull off | 19:03 | |
19:03
woodruffw joined
|
|||
skids | Mostly because the "VM" part of LLVM is a bit of an exageration, from what I glean. | 19:04 | |
19:04
Ven joined
19:05
Ven left
|
|||
geekosaur | it's a VM but not in the sense that people use the term these days | 19:06 | |
tadzik | also because the LL part indicates that LLVM may be not suited for Perl 6 too much :) | 19:09 | |
perlpilot | LLVM is a toolkit for building a VM for your project :) | 19:15 | |
19:16
MadcapJake joined,
silug left,
MadcapJake` joined
19:17
bakedb joined,
Actualeyes left
|
|||
moritz | LLVM is also a compiler backend and a compiler target | 19:17 | |
perlpilot | I think Perl 6 -> LLVM just need someone with the right kind of stubbornness and love .... perhaps similar to Perl 6 -> CLR | 19:19 | |
19:21
tmch joined,
yqt joined
|
|||
RabidGravy | all sorts of crack | 19:21 | |
moritz | more like Perl 6 -> C | 19:22 | |
19:23
FROGGS joined
|
|||
n1cky | i've never worked with compilers for functinoal languages | 19:24 | |
perlpilot | yeah, my compilers have never worked either. ;-) | ||
n1cky | I've been sitting here for a couple minutes thinking about how the hell first-class functions would even work | ||
haha :s | |||
19:28
perl6newbee left,
wisti left
|
|||
Hotkeys | Why is there a bare 'get' routine that takes lines from $*IN | 19:29 | |
but there's no bare 'read($n)' routine for reading bytes from $*IN | |||
(I know I can just do $*IN.read($n) but still) | 19:30 | ||
19:31
buharin joined
|
|||
lizmat | Hotkeys: I think hysterical raisins | 19:31 | |
ugexe | so you can do `while <> { }` or whatever | ||
perlpilot | Hotkeys: I think there's a getc() routine for that | ||
19:32
patrickz joined
|
|||
perlpilot | Hotkeys: well ... for characters, not bytes | 19:32 | |
psch | m: say getc $*IN | ||
camelia | rakudo-moar ad1928: OUTPUT«C» | ||
lizmat | Hotkeys: same applies e.g. for a "words" sub | ||
Hotkeys | right | ||
19:32
cpage_ joined
|
|||
psch | still needs the handle | 19:32 | |
Hotkeys | I was thinking for bytes | ||
lizmat | m: .say for words | ||
camelia | rakudo-moar ad1928: OUTPUT«5===SORRY!5=== Error while compiling /tmp/WYp02duUiRCalling words() will never work with any of these multi signatures: ($what, $limit = Inf, *%named)at /tmp/WYp02duUiR:1------> 3.say for 7⏏5words» | ||
lizmat | m: .say for words($*IN) # expected this | ||
camelia | rakudo-moar ad1928: OUTPUT«CéadslánagsléibhtemaorgaChontaeDhúnnanGallAgusdháchéadslánaganEireagalardinastuaoscionncaoriscoll;NuairaghluaismisethartleLochDhúnLúich’gociúi…» | ||
perlpilot | Hotkeys: eagerly awaiting your patch to add a read sub :) | ||
Hotkeys | oh | ||
did I just rope myself into that | 19:33 | ||
19:33
silug joined
|
|||
lizmat | perlpilot: would that not need to be part of 6.d ? | 19:33 | |
19:33
rubio_terra joined
|
|||
Hotkeys | ^^^ | 19:33 | |
Hotkeys unropes | |||
lizmat | it would not be an additional method | ||
perlpilot | aye, it would steal that sub from the users | ||
Hotkeys | m: say getc | ||
camelia | rakudo-moar ad1928: OUTPUT«read string requires an object with REPR MVMOSHandle in block <unit> at /tmp/TyY0i1fBMN line 1» | ||
Hotkeys | m: say getc() | ||
camelia | rakudo-moar ad1928: OUTPUT«read string requires an object with REPR MVMOSHandle in block <unit> at /tmp/gXYCrV2P6k line 1» | ||
lizmat is facing a similar dilemma with native str arrays | |||
Hotkeys | m: say get() | ||
camelia | rakudo-moar ad1928: OUTPUT«Céad slán ag sléibhte maorga Chontae Dhún na nGall» | ||
Hotkeys | why is get so special | 19:34 | |
lizmat | Hotkeys: basically, because it was in p5 ? | ||
Hotkeys | ah | ||
masak | p6: say ("0" x 3 ~ "1").substr(2) | ||
camelia | rakudo-moar ad1928: OUTPUT«00» | ||
masak | :/ | ||
19:34
lichtkind_ joined,
wisti joined
|
|||
masak | rt.perl.org/Ticket/Display.html?id=123602 | 19:34 | |
Hotkeys | I think at minimum there should be get, getc, and read | ||
masak | open for more than one year now... :/ | 19:35 | |
someone^WI should totally track down what's up with that one | |||
Hotkeys | weird | ||
19:35
CIAvash left
|
|||
lizmat | masak: fwiw, it seems MoarVM specific: | 19:36 | |
$ ./perl6-j -e 'say ("0" x 3 ~ "1").substr(2)' | |||
01 | |||
perlpilot | m: say ("0" x 3 ~ "1").substr($_) for ^4; # also this | 19:37 | |
camelia | rakudo-moar ad1928: OUTPUT«0001001001» | ||
lizmat | m: use nqp; say nqp::substr("0" x 3 ~ "1",2) # oddly enough nqp seems ok ? | 19:38 | |
camelia | rakudo-moar ad1928: OUTPUT«01» | ||
19:38
lichtkind__ left
|
|||
psch | nqp-m: my $x := nqp::x("0", 3) ~ "1"; nqp::say(nqp::substr($x, 2)) | 19:38 | |
camelia | nqp-moarvm: OUTPUT«00» | ||
perlpilot | nqp-j: my $x := nqp::x("0", 3) ~ "1"; nqp::say(nqp::substr($x, 2)) | 19:40 | |
camelia | nqp-jvm: OUTPUT«(signal ABRT)## There is insufficient memory for the Java Runtime Environment to continue.# pthread_getattr_np# An error report file with more information is saved as:# /tmp/jvm-29419/hs_error.log» | ||
perlpilot | heh | ||
psch | m: use nqp; say nqp::substr(nqp::x("0", 3) ~ "1",2) | ||
camelia | rakudo-moar ad1928: OUTPUT«00» | ||
masak | lizmat: it is MoarVM-specific, as the issue points out :) | ||
lizmat | m: use nqp; my $x := nqp::concat(nqp::x("0", 3),"1"); nqp::say(nqp::substr($x, 2)) | ||
camelia | rakudo-moar ad1928: OUTPUT«00» | ||
masak | (back then we had Parrot to compare with) | ||
so likely MoarVM gets "roped" into doing it wrong ;) | |||
lizmat | m: use nqp; my $x := nqp::concat(nqp::x("0", 3),"12"); nqp::say(nqp::substr($x, 2)) # feels like an off-by-one error somewhere | 19:41 | |
camelia | rakudo-moar ad1928: OUTPUT«001» | ||
masak | aye | ||
masak .oO( just enough rope to shoot yourself in the foot... plus one ) | |||
lizmat | m: use nqp; my $x := nqp::concat(nqp::x("0", 3),"12"); nqp::say(nqp::substr($x,1)) # definitely off-by-one | 19:42 | |
camelia | rakudo-moar ad1928: OUTPUT«0012» | ||
perlpilot | seems highly specific to the number 2 though | ||
lizmat | .oO( which is off by one :-) |
||
perlpilot | (I bet lizmat's last will work well with 3 instead of 1 too) | ||
masak .oO( well, you see, 2 is off by 1 by 1 ) | 19:43 | ||
lizmat | m: use nqp; my $x := nqp::concat(nqp::x("0", 3),"12"); nqp::say(nqp::substr($x,3)) # indeed | ||
camelia | rakudo-moar ad1928: OUTPUT«12» | ||
19:43
wisti left
|
|||
patrickz | Hey! How can I compile a .p6 file to a .moarvm file? | 19:45 | |
lizmat | technically, you can, but support is still very sketchy | 19:46 | |
you're probably better of putting the code in a module, and loading that in a script / one liner | 19:47 | ||
19:48
rubio_terra left
|
|||
patrickz | I'd like to have the .moarvm file for debugging purposes... | 19:48 | |
19:48
rubio_terra joined
19:49
wisti joined,
brrt joined
19:51
buharin left
19:55
musiKk_ joined
|
|||
moritz | last I tried, you could compile a script to .moarvm. You just couldn't start that bytecode file :-) | 19:57 | |
patrickz | moritz: I don't want to run it, but dump the bytecode. So, how would I do that? | 19:58 | |
diakopter | you can, you just gotta supply all the right paths for libs | ||
patrickz: there once was a --dump for the moar executable | 19:59 | ||
psch | patrickz: --target=moarvm --output="$file" from the p6-level | ||
ugexe | perl6 --target=mbc --output=filename.moar file-to-precomp | ||
psch | ah, mbc it is | ||
19:59
woodruffw left
|
|||
psch | ...it was moarvm once though, wasn't it? | 20:00 | |
patrickz | psch: already tried mbc,moar but only get "Cannot dump this object; no dump method" | ||
psch | patrickz: that's when you leave out output | ||
patrickz: without --output it tries to print it via a dump method | |||
patrickz | ah! | 20:01 | |
that was my mistake, thank you! | |||
only tried -o not --output= ...sticking to the docs I should do... | 20:02 | ||
20:02
rubio_terra left,
itaipu joined
20:04
woodruffw joined,
woodruffw left
20:05
woodruffw joined,
woodruffw left,
woodruffw joined
20:06
dha joined
20:07
espadrine left,
darutoko left
|
|||
Azry | lizmat: sorry about issue #726 i have some habits to train =( | 20:18 | |
lizmat | Well, the idea was nice, but it's very much appreciated if you test the patch, and also run a spectest before you do a PR :-) | 20:19 | |
Azry | first commit ever, i guess i was a little too hasty x) | 20:20 | |
lizmat | well, we've all been too hasty at some time... | 20:21 | |
so keep them coming, but a little less hasty, please :-) | |||
20:24
Ven joined
|
|||
perlpilot | lizmat++ Azry++ | 20:25 | |
20:26
cdg joined,
wamba left
20:30
Ven left
20:32
brrt left
20:36
salva left,
dha left
20:40
laz78 joined
20:46
dha joined
20:50
itaipu left
20:52
cpage_ left
20:56
musiKk_ left
20:57
dha left
20:59
woodruffw left
|
|||
patrickz | How can I rebuild nqp + perl6 when I made changes to nqp? Neither in rakudo/ nor in rakudo/nqp/ does 'make realclean' seem to remove enough nqp stuff to actually cause a rebuild... | 21:00 | |
hoelzro | patrickz: I usually just remove the directory I install nqp to | 21:01 | |
21:01
dha joined
|
|||
hoelzro | I build rakudo with `perl Configure --prefix=/tmp/nom --gen-moar && make install`, so for me, that looks like `rm -rf /tmp/nom` | 21:01 | |
skids | rakudo build will happily use an nqp it finds pre-built, you have rm the binary. | ||
21:02
skids left
|
|||
TimToady | I usually just a 'make install && (cd ..; make install)' from the nqp directory | 21:02 | |
patrickz | ah so if I use the default install/ folder I would just remove that one | ||
hoelzro | correct | 21:03 | |
21:04
woodruffw joined
|
|||
RabidGravy | I really don't like it when stuff segfaults reliably UNTIL YOU RUN IT WITH A DEBUGGER | 21:06 | |
21:07
laz_78 joined
21:10
laz78 left,
laz_78 is now known as laz78
|
|||
patrickz | Development is so much easier when you actually manage to build the code you want to try. :-P | 21:11 | |
:ratchet is meant to cling to the input and not the regex, right? | 21:16 | ||
psch | i find that unlikely, given :ratchet is a regex adverb | ||
moritz | :ratchet is lexically scoped within the regex | ||
so it very much sticks to the regex, not the string | 21:17 | ||
21:18
laz78 left
|
|||
patrickz | Hm, I think I wanted to ask something different. :ratchet prevents backtracking in the input, not in the regex. So going back in the regex is fine as long as one does not release already consumed input, correct? | 21:19 | |
psch | well, backtracking means "if you can't match anything at the current position, discard successful matches before the current position and try alternatives" | ||
so, you backtrack over the string, discarding the tokens that matched | 21:20 | ||
21:20
TEttinger joined
|
|||
patrickz | Ok. I think I understood correctly then. | 21:20 | |
21:22
cpage_ joined,
ufobat left
|
|||
psch | m: grammar G { regex TOP { { say "start of TOP" } ^ <a> <b> $ { say "end of TOP" } }; regex a { { say "start of a" } 'a' 'a' { say "end of a" } }; token b { { say "start of b" } 'a' { say "end of b" } } }; G.parse("aa") | 21:22 | |
camelia | rakudo-moar 9eb1fb: OUTPUT«start of TOPstart of aend of astart of b» | ||
psch | ...i maybe should've gisted that | ||
21:22
cpage_ left
|
|||
psch | ehh | 21:22 | |
also sequence points mess with backtracking i think? | 21:23 | ||
so nevermind that anyway >_> | |||
patrickz | m: say "asdfEnd" ~~ / :ratchet ^ [ .+? | z ] End $ /; | ||
camelia | rakudo-moar 9eb1fb: OUTPUT«Nil» | ||
patrickz | That should match I think | ||
Hotkeys | is anyone else having trouble building panda on windows? | ||
specifically Shell::Command | |||
which hasn't changed in a while so I'm not sure why it's breaking | 21:24 | ||
RabidGravy | "trouble"? | ||
psch | patrickz: i don't think so. it tries to match "" or z, then tries to match End, fails, and stops | 21:25 | |
mind, i'm not great with regex though vOv | 21:26 | ||
Hotkeys | Here's the err gist.github.com/johnspurr/d1f85c4e7bcd8beb848c | ||
sorry for weird wrapping | |||
patrickz | but if ratchet only means its forbidden to release consumed input, it should go back and consume more input in .+? | ||
Hotkeys | powershell doesn't really do multiline copying well | ||
timotimo | i think patrickz misunderstood the function of "ratchet" | ||
Hotkeys | RabidGravy: | ||
timotimo | and it's likely that the documentation is worded in a misleading way | 21:27 | |
psch | maybe "don't retry" fits better for what :ratchet does? | ||
well, in this informal context here at least | 21:28 | ||
21:28
labster joined,
wisti left
|
|||
timotimo | m: say "asdfEnd" ~~ / :ratchet ^ [ End | .+? | z ] <?after End> $ /; | 21:28 | |
camelia | rakudo-moar 9eb1fb: OUTPUT«Nil» | ||
timotimo | m: say "asdfEnd" ~~ / :ratchet ^ [ End | .+? | z ] <?before End> $ /; | 21:29 | |
camelia | rakudo-moar 9eb1fb: OUTPUT«Nil» | ||
timotimo | oh? | ||
patrickz | say "asdfEnd" ~~ / :ratchet ^ [ .+? || z ] End $ /; | ||
m: say "asdfEnd" ~~ / :ratchet ^ [ .+? || z ] End $ /; | |||
camelia | rakudo-moar 9eb1fb: OUTPUT«「asdfEnd」» | ||
timotimo | oh, of course, the group isn't quantified at all | ||
m: say "asdfEnd" ~~ / :ratchet ^ [ End | .+? | z ]+ <?after End> $ /; | |||
camelia | rakudo-moar 9eb1fb: OUTPUT«「asdfEnd」» | ||
psch | m: say "ab" ~~ / a | ab /; say "ab" ~~ / a || ab / | 21:30 | |
camelia | rakudo-moar 9eb1fb: OUTPUT«「ab」「a」» | ||
psch | hm, that interaction i don't quite see through, i have to say :) | 21:31 | |
patrickz | Non LTM grouping does seem backtrack in that particular sense. | 21:32 | |
psch | m: say "asdfEnd" ~~ / :ratchet ^ [ .+? | z ] { say $/ } End $ /; | 21:33 | |
camelia | rakudo-moar 9eb1fb: OUTPUT«「a」Nil» | ||
psch | m: say "asdfEnd" ~~ / :ratchet ^ [ .+? || z ] { say $/.CURSOR } End $ /; | ||
camelia | rakudo-moar 9eb1fb: OUTPUT«Cursor.newCursor.newCursor.newCursor.new「asdfEnd」» | ||
psch | err | ||
m: say "asdfEnd" ~~ / :ratchet ^ [ .+? || z ] { say $/ } End $ /; | |||
camelia | rakudo-moar 9eb1fb: OUTPUT«「a」「a」「a」「a」「asdfEnd」» | ||
psch | 'a', 'as', 'asd', 'asdf' would have made a bit more sense to me, but still looked wrong | ||
rudi_s | Hi. Can I create random numbers with a fixed seed? | 21:34 | |
moritz | note that frugal quantifiers force backtracking | ||
psch | moritz++ | ||
that's the kind of detail i'm likely to forget :) | |||
m: say "asdfEnd" ~~ / :ratchet ^ [ .+ || z ] { say $/ } End $ /; | |||
camelia | rakudo-moar 9eb1fb: OUTPUT«「asdfEnd」Nil» | ||
moritz | otherwise a frugal quantifier within :ratchtet would only ever match the minimal number that the quantifier allows, making it very much useless | 21:35 | |
patrickz | m: say "asdfEnd" ~~ / :ratchet ^ [ .+? || z ] {say $/} End $ /; | ||
camelia | rakudo-moar 9eb1fb: OUTPUT«「a」「a」「a」「a」「asdfEnd」» | ||
patrickz | m: say "asdfEnd" ~~ / :ratchet ^ [ .+? | z ] {say $/} End $ /; | 21:36 | |
camelia | rakudo-moar 9eb1fb: OUTPUT«「a」Nil» | ||
patrickz | LTM alternations allow backtracking into left-to-right alternations don't. Is that the correct interpretation? | 21:37 | |
[Coke] | m: srand 1234; say rand | ||
camelia | rakudo-moar 9eb1fb: OUTPUT«0.652006306578386» | ||
[Coke] | m: srand 1234; say rand | ||
camelia | rakudo-moar 9eb1fb: OUTPUT«0.652006306578386» | ||
[Coke] | rudi_s: ^^ | ||
moritz hates that API | |||
[Coke] | doc.perl6.org mentions srand, but doesn't actually describe it. | ||
21:37
rindolf left
|
|||
moritz | I'd much rather have (^(2**32)).pick(*, :seed(1234)) | 21:38 | |
or something like that | |||
psch | m: say "aab" ~~ / ^ [ $<a>=a | ab ]+ $ /; | ||
camelia | rakudo-moar 9eb1fb: OUTPUT«「aab」 a => 「a」» | ||
psch | m: say "aab" ~~ / ^ [ $<a>=a || ab ]+ $ /; | ||
camelia | rakudo-moar 9eb1fb: OUTPUT«「aab」 a => 「a」» | ||
moritz | or maybe a dynamic variable $*SEED or so | ||
[Coke] | moritz: your api implies that the seed is a one shot, no? | ||
rudi_s | [Coke]: Thanks. | ||
moritz | [Coke]: yes; hence the second suggestion with the dynamic variable | 21:39 | |
rudi_s | Hm. | ||
I guess that's global .. so I'll destroy any other random decision in perl if I force srand, right? | |||
I'd like to get a "local" forced seed. | |||
moritz | rudi_s: right. Which is why I don't like that API | ||
rudi_s | *for just one rand call. | ||
21:45
espadrine joined
|
|||
psch | m: say 1 !=3 # oh wow this is still around :/ | 21:46 | |
camelia | rakudo-moar 9eb1fb: OUTPUT«Cannot modify an immutable Int in block <unit> at /tmp/kYWiThl9lv line 1» | ||
psch | well, it is RT'd at least :S | 21:47 | |
21:53
AlexDaniel joined
|
|||
patrickz | I think I still don't understand it. [ || ] allows to be backtracked into in ratchet mode, while [ | ] does not. My gut feeling tells me the two should behave the same. | 21:54 | |
21:54
FROGGS left
|
|||
lizmat | m: my $a = 1; dd $a !=3; dd $a | 21:56 | |
camelia | rakudo-moar 92c17e: OUTPUT«Bool::FalseInt $a = 3» | ||
lizmat | weird | 21:57 | |
psch | patrickz: if you remove the ? quantifier the behavior changes | 21:58 | |
patrickz: so it's clearly an interaction between ratchet, the two alternations, and ? | |||
m: say "aab" ~~ / :ratchet ^ [ $<a>=a || ab ]+ $ /; # this also seems weird | 21:59 | ||
camelia | rakudo-moar 92c17e: OUTPUT«Nil» | ||
psch | ah, nvm, that's correct | 22:00 | |
patrickz | the ? is needed, otherwise .+ would eat all input and leave none for 'End' | ||
psch | patrickz: is :ratchet needed? 'cause without it works for both | ||
patrickz: and ? disables :ratchet locally | |||
patrickz: i'd suspect that for LTM, +? means "0 chars" (because it can) and that means the longer token is the literal | 22:01 | ||
that's with really shallow knowledge of the regex engine, though | |||
err, "amount of literal chars before the quantifier", which with .+? is 1, actually... | 22:02 | ||
hm | |||
m: say "a" ~~ / [ $<a>=. | $<b>=.] / | |||
camelia | rakudo-moar 92c17e: OUTPUT«「a」 a => 「a」» | ||
psch | m: say "a" ~~ / [ $<a>=. | $<b>=a] / | 22:03 | |
camelia | rakudo-moar 92c17e: OUTPUT«「a」 a => 「a」» | ||
psch | ...not sure that actually gives a hint vOv | ||
22:03
kaare__ left
|
|||
psch | lizmat: the ticket is #121108, fyi | 22:03 | |
22:03
woodruffw left
|
|||
patrickz | I'm trying to fix a bug I reported about this behaviour a long time ago. I think I found the piece of code that is responsible. LTM alternations clear the backtrack stack in ratchet mode when they are done, normal alternations don't. But before thinking about a fix I thought I'd make sure I understood what the correct behaviour should be. | 22:05 | |
So my questions are not about "How to get this to work?" but about "How is this meant to work?" | 22:06 | ||
psch | patrickz: i'd say in ratchet mode neither should be allowed to clear the backtrack stack | ||
patrickz: note that, in turn, a ?-quantified token under either alternation is still allowed to clear the backtrack stack | |||
patrickz | you mean ::, do you? | 22:07 | |
psch | 21:34 < moritz> note that frugal quantifiers force backtracking | 22:08 | |
so, no, i mean ? | |||
but i might have confused "clearing the backtrack stack" with "allow backtracking" :) | |||
patrickz | true | 22:09 | |
22:09
woodruffw joined
|
|||
patrickz | :-) | 22:09 | |
22:09
woodruffw left
|
|||
patrickz | clear the backtrack stack == do not backtrack past this point | 22:09 | |
22:09
woodruffw joined
|
|||
psch | yeah, that's what i gathered on the second read | 22:09 | |
the reference to :: helped :) | |||
patrickz | So to get your fist statement clear, you think neither | nor || should allow backtracking into in ratchet mode. | 22:10 | |
psch | not on their own, yes | ||
if the alternate between tokens of which at least one is frugally quantified, they have to | |||
s/the/they/ | 22:11 | ||
22:11
itaipu joined
|
|||
patrickz | Now it's getting complicated. | 22:11 | |
psch | :r [ a | b ] / and / :r [ a || b ] / both don't backtrack | 22:12 | |
:r [ a? | b ] / and / :r [ a? || b ] / both do backtrack | |||
patrickz | should, but don't | ||
psch | that's my understanding | ||
right, talking in terms of an ideal implementation :) | |||
*i was | 22:13 | ||
22:14
rvchangue left
|
|||
patrickz | Wait. It wouldn't hurt if the alternations would also backtrack in the [ a | b ] or [ a || b ] case. | 22:14 | |
22:14
rodarmor left,
ilbot3 left
22:15
rodarmor joined
|
|||
psch | right, the examples are too strongly reduce | 22:15 | |
22:16
rvchangue joined,
laz78 joined
|
|||
patrickz | I think we need a statement from someone authorative. Guessing what the specification might be doesn't help much. :-( | 22:17 | |
22:17
ilbot3 joined
|
|||
psch | i'd agree | 22:18 | |
the bits seem to fit together well enough, but to me at least it happened before that some information i wasn't aware of changed the interpretation completely | |||
22:19
espadrine left
|
|||
psch | if it's already RT'd maybe just try and poke jnthn or TimToady about it when they're around. if it's not RT'd, RT it and do the same :) | 22:19 | |
patrickz | Will do. Thanks so far! | 22:20 | |
22:21
espadrine joined
|
|||
AlexDaniel | “APL does this to make Perl 5 easy to read” hahaha | 22:23 | |
CurtisOvidPoe: your talks are awesome. Thank you | 22:24 | ||
CurtisOvidPoe | AlexDaniel: thanks. And I was disappointed that the APL joke didn’t get the laughs I hoped for :) | 22:25 | |
TEttinger | what's this about APL? | ||
I like a lot of stuff in the language, and I wish multi-dimensional data had better support in more languages/platforms | 22:26 | ||
CurtisOvidPoe | I was talking about punctuation characters. APL uses them to make Perl easy to read :) | ||
TEttinger | oh yeah | ||
AlexDaniel | TEttinger: youtu.be/hR9UdvxMAbo?t=702 | ||
CurtisOvidPoe: this silence in response just makes it even funnier :) | 22:27 | ||
TEttinger | oddly enough, if you're coding on a tablet, APL could use a switchable keyboard to enter the special symbols. making it better suited as a language for the 2020s than the 1960s | ||
AlexDaniel | Coding on a tablet? Hmmm… | ||
TEttinger | so could perl6 for unicode | 22:28 | |
AlexDaniel | CurtisOvidPoe: I think that “Perl 6 for Mere Mortals” was the talk that got me seriously into Perl 6. Thanks for that too. | ||
CurtisOvidPoe | You’re quite welcome. Share it with others, please! | 22:29 | |
TEttinger | imagine the emoji as sigils | ||
AlexDaniel | UInt? Whoa… | 22:35 | |
22:40
kid51 joined,
maybekoo2 left
22:42
cosimo_ left
22:43
cosimo joined
22:49
kid511 joined
22:50
kid51 left
22:52
donaldh joined
22:55
kid511 left
|
|||
timotimo | UInt tests? | 22:55 | |
22:55
dha left
22:57
kid51 joined
22:59
pecastro joined
23:02
TEttinger left
23:04
woodruffw left
23:09
cpage_ joined
23:10
woodruffw joined
23:14
noganex left
23:17
TEttinger joined
|
|||
AlexDaniel | timotimo: I see nothing | 23:22 | |
timotimo | ? | 23:24 | |
23:24
woodruffw left
23:26
perlawhirl joined
23:31
woodruffw joined
|
|||
perlawhirl | TEttinger: there are several languages where the entire syntax is emojo... emojicode and emoji-lang... plus various others floating around | 23:34 | |
AlexDaniel | timotimo: I don't see any tests in roast for UInt | 23:35 | |
23:36
spider-mario left
23:38
patrickz left
|
|||
timotimo | oh | 23:38 | |
i was just making a pun | |||
sorry about the confusion | |||
23:40
cdg left
|
|||
Hotkeys | I spent way too long explaining (poorly) polymod in a codegolf answer just now | 23:42 | |
23:43
woodruffw left
|
|||
AlexDaniel | timotimo: actually, it turned out to be a good observation | 23:45 | |
what to do in such cases? Just create an issue in roast repo? (I don't feel like writing any tests today) | 23:46 | ||
23:47
chienjo joined,
chienjo left
|
|||
timotimo | polymod is quite lovely, isn't it | 23:49 | |
23:49
jack_rabbit joined
23:55
geekosaur left
23:57
geekosaur joined
|
|||
Hotkeys | yeah it's pretty cool | 23:58 | |
here is my trainwreck of an explanation codegolf.stackexchange.com/a/75659/46687 | |||
timotimo: |