»ö« 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.
raschipi Can also mean any language that's not a low-level one, which would be an assembler. 00:00
Geth ecosystem: 147e3a9538 | (Tom Browder)++ | META.list
make maintenance easier
01:03
u-ou- I have an Int and want to make an int32 out of its value. How do I do that? 03:07
m: int32.new(1).WHAT.say 03:16
camelia (Int)
u-ou- :I
OK that wasn't even my problem I was just missing an argument 03:22
the conversion seems to happen automatically now
samcv ugexe, use a typed variable 03:51
m: my int32 $thing = 10; say $thing.WHAT
camelia (Int)
samcv also yes the conversion happens when you display it
it's still an int32 though
AlexDaniel uhhhh int32… 03:53
(RT #131994) 03:54
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131994
samcv well 04:09
m: my int64 $a; say $a.WHAT
camelia (Int)
samcv m: my int16 $a; say $a.WHAT
camelia (Int)
samcv m: my int16 $a = 999999; say $a.WHAT; say $a
camelia (Int)
16959
lizmat afk until probably much later today& 04:17
Ven`` wow, I stop looking for a few days, and we now have a JSX slang :o. pmurias++ 09:20
Ven`` Not me. 09:21
BooK surely perl6 has an equivalent for AUTOLOAD? 10:39
moritz BooK: look for FALLBACK in the docs 10:40
timotimo that's only for methods on classes, though. not for packages in general
(because we don't use package lookup for method dispatch in perl6)
BooK thanks 10:48
pmurias m: 11:01
BooK timotimo: if I wanted to add a small section about it in a 5to6 page on doc.perl6.org, which one would that be? 11:22
since there's no 5to6-perlobj, I was thinking maybe 5to6-nutshell#Functions 11:23
moritz or start a 5to6-perlobj :-) 11:24
BooK I was afraid someone would say that :-) 11:25
moritz moritz: speaking out loud what everybody else was sensible enough not to say since around 1988 :-) 11:26
BooK it's just that he perlobj toc is scary if you have to write it in perl6 :-) 11:34
moritz it doesn't need to be complete by any measure 11:39
BooK what about I make a file with all the headers, fill in the AUTOLOAD one, and let someone else figure it out ? 11:44
An Object is Simply a Data Structure / A Class is Simply a Package / A Method is Simply a Subroutine # the first three sound like fun
moritz Objects are Instances of Classes / Classes are Firs-Class Citizen / Methods Are A Real Thing :-) 11:45
Skarsnik hm, what is the clever to give a replacement pattern in a conf file (something that get EVAL)? I want to pass something like 'LibFoo::*::Binding' and have the * replaced? 11:49
moritz where does the replacement come from? 11:51
from within the config file? or from the application?
Skarsnik the app 11:52
I mean I can do a s/*/$stuff/ probably 11:53
moritz then do it 11:54
nothing easier than that
[Coke] MasterDuke: I know that HLL means "High Level Language" it doesn't make sense in terms of the text I was referring to. 12:01
Sorry I was not clear. 12:02
(the only HLL here that it could mean is Rakudo. And this is on the docs site and we're talking about Perl 6 already. 12:03
nksr JOIN 12:04
Zoffix Join successful 12:05
Skarsnik hm, is there a concensus about circular dependancy btw?
Zoffix I thought it was something impossible; 'cause one-pass-parse and what not 12:06
[Coke] Skarsnik: github.com/perl6/doc/issues/1419 ?
Skarsnik I had legit need for circular dependancy in Discord, since I like to type thing 12:07
moritz it's possible within a compunit 12:09
jnthn I think the general principle is that if two things are so tightly related as to have a circular dependency, they probably belong in the same compilation unit. Thus there's ways to handle circular deps within a compilation unit, but not between them.
moritz I don't like that restriction, but there are hard technical problems to solve if we want to lift that 12:10
jnthn kinda likes it
moritz any IMHO it's not worth the effort, compared to other areas we can put effort in
Zoffix is neutral about it
Skarsnik I think last time I tried it stuck rakudo in an infinite loop 12:11
Zoffix The first time I came across it, I just dropped type contraints and moved on :P (gradual typing)++
Skarsnik: there should be a mechanism preventing that and complaining about circular dependency. If it hangs again, that's a bug
nksr better make mediator to avoid cir...deps 12:12
Skarsnik_ github.com/Skarsnik/perl6-discord/...d/User.pm6 some field need Discord::Channel but Discord::Channel need Discord::User x) 12:13
full typing is usefull for IDE for example 12:14
nksr up vote 2 down vote For purely object-oriented code, there is no circular dependency problem. You can quite happily have something like: # AAAA.pm package AAAA; use strict; use warnings; use BBBB; sub new { my $class = shift; my ($i) = @_; bless { b => $i > 0 ? BBBB->new($i-1) : $i }, $class; } 1; # BBBB.pm package BBBB; use strict; use warnings; use AAAA; sub new { my $class = shift; my ($i) = @_; 12:18
stackoverflow.com/questions/270935...th-require
soory dooooooddddd.....
the link may help you 12:19
Skarsnik it's for perl5 code x) 12:20
nksr k 12:21
Skarsnik maybe beable able to write 'class B {*}; class A { blablalb}' could be a workaround?
Zoffix Skarsnik: what does {*} do in that case? 12:32
Skarsnik dunno, like with NC native routine. 'this is not real code, but something elsewhere'?
Zoffix Looks to be just a * as a term inside class's body. 12:33
Skarsnik: we have class B {…} where you can provide the body elsewhere in the file, but that doesn't solve the problem if it's in another file. 12:34
And the * doesn't seem to be needed in NC routines. I don't know why people put it in. The {*} is a thing in protos tho 12:35
m: use NativeCall; sub fork is native {}; fork; $*PID.say
camelia 20800
20798
Zoffix m: proto foo { say "before"; {*}; say "after }; multi foo { say "♥" 12:36
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> 3; {*}; say "after }; multi foo { say "♥"7⏏5<EOL>
expecting any of:
postfix
statement end
statement modifier
state…
Zoffix m: proto foo { say "before"; {*}; say "after }; multi foo { say "♥" }; foo
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse expression in double quotes; couldn't find final '"'
at <tmp>:1
------> 3say "after }; multi foo { say "♥" }; foo7⏏5<EOL>
expecting any of:
horizontal whitespace…
Zoffix m: proto foo { say "before"; {*}; say "after" }; multi foo { say "♥" }; foo 12:37
camelia before

after
Zoffix m: proto foo { {*}; say "before"; {*}; say "after"; {*} }; multi foo { say "♥" }; foo
camelia
before

after
Zoffix ^_^
Zoffix m: proto foo { {*} xx {*} }; multi foo { "♥".say but 70 }; foo 12:40
camelia
Zoffix kinda expected it to make 70 hearts
or 71 rather
Ah, it's coercing to Num 12:43
jnthn m: proto foo { {*} xx {*} }; multi foo { "♥".say; 70 }; foo
camelia









































Zoffix m: proto foo { {*} xx {*} }; multi foo { "♥".say but role { method Num { 70e0 } } }; foo
camelia
jnthn Numeric maybe?
Oh but 12:44
.say returns Bool
Zoffix m: proto foo { {*} xx {*} }; multi foo { "♥".say but role { method Num { 70e0 }; method Int { 70 } } }; foo
camelia
jnthn Bool
is an Int
as it's an enum
So it'll just go and unbox the 1
Zoffix It goes through Num() coercer here: github.com/rakudo/rakudo/blob/4b02...t.pm#L1507
And then gets .Int called on it 12:45
jnthn There's an Int candidate below: github.com/rakudo/rakudo/blob/4b02...t.pm#L1517
Zoffix Oh
s: &infix:<xx>, \(42, ("42".uc but 42))
SourceBaby Zoffix, Sauce is at github.com/rakudo/rakudo/blob/4b02...t.pm#L1507
Zoffix I used ^ that because .say interfered with the bot :P 12:46
s: &infix:<xx>, \(42, ("42".so but 42))
SourceBaby Zoffix, Sauce is at github.com/rakudo/rakudo/blob/4b02...t.pm#L1517 12:46
Zoffix *phew* mistery solved :)
jnthn returns to his spesh mystery :)
Geth doc/rafaelschipiura-mention-close-in-5to6: f4cd255c17 | rafaelschipiura++ (committed using GitHub Web editor) | doc/Language/5to6-perlfunc.pod6
Mention importance of closing handles in 5to6
12:50
BooK jnthn: actually Bool is not realy an enum, but faking it well (from what I've seen/understood of the code)
Geth doc: rafaelschipiura++ created pull request #1537:
Mention importance of closing handles in 5to6
BooK or, is an enum in a different way than other enums :-)
jnthn m: say Bool.HOW.^name
camelia Perl6::Metamodel::EnumHOW
jnthn It needs a bit of bootstrap screwery, but it really is using the enum meta-object :) 12:51
It used to be much more cheaty
BooK m: say Bool.enums; say Order.enums
camelia {False => 0, True => 1}
Map.new((:Less(-1),:More(1),:Same(0)))
jnthn Hm, interseting discrepancy 12:52
BooK nine is going to show me around on Thursday evening, this is on my map
jnthn :)
BooK the rough plan is to see if we can make Bool do the Enumeration role 12:53
jnthn Aha 12:54
BooK the real plan is that I know more at the end than I did at the beginning :-)
Altreus can someone confirm my understanding here? In the docs for but, it gives this example: «say 42 but 'forty two';» Does this take 'forty two'.^name, which is Str, then override 42.Str with that, so that say calls 42.Str and actually gets the object we butted it with?
jnthn Altreus: Yes
Altreus ace
thanks :)
jnthn Or something like that
BooK perl6 is really handwavy :-) 12:55
Altreus say calls .gist, right? so it's probably .gist calling .Str
evalable6 (exit code 1) 04===SORRY!04=== Error while compiling /tmp/fnSQjv4agP
Bogus p…
Altreus, Full output: gist.github.com/cdd583b99fd4c667d9...1d579ccfd9
Altreus no thank you eval bot
jnthn Actually, almsot exactly that: github.com/rakudo/rakudo/blob/f1b0...ors.pm#L84
s/almost// :) 12:56
raschipi Altreus: In the other hand, it's written in Perl6, so after learning Perl6 you can go and easily know exactly what's happening.
Altreus Yeah once I understand it all fully I can finally start to learn it 12:58
Zoffix say calls .Str on the object we butted it with, not on 42 :)
evalable6 (exit code 1) 04===SORRY!04===
Argument to "say" seems to be malformed
at /t…
Zoffix, Full output: gist.github.com/f316a20bdf419285f0...00475ea122
Zoffix evalable6: shoo!
evalable6 (exit code 1) 04===SORRY!04=== Error while compiling /tmp/cw37llz1IJ
Bogus p…
Zoffix, Full output: gist.github.com/f500e8cd21ffadc8fb...61433d8752
Zoffix m: { Bool.enums<bar> = 42 }; say Bool.enums 13:00
camelia {False => 0, True => 1, bar => 42}
Zoffix m: enum Foo <a b c>; Foo.enums.^name.say 13:01
camelia Map
Zoffix Easy fix. Just need a .Map on here: github.com/rakudo/rakudo/blob/nom/...ool.pm#L37 same as it's here: github.com/rakudo/rakudo/blob/4b02...tion.pm#L6 13:02
Who wants to do it? :D
cd $(mktemp -d); git clone github.com/rakudo/rakudo/ . ; edit src/core/Bool.pm ; perl Configure.pl --gen-moar --gen-nqp --backends=moar; make; make install; make test; make spectest; git commit src/core/Bool.pm -m 'Make Bool.enums consistent with Enumeration.enums'; git push; 13:04
change github.com/rakudo/rakudo/ to the URL of your fork; click "Submit PR" button on GitHub after last step :) 13:05
Zoffix &
Altreus Zoffix: that was my understanding!
oh
thanks then :)
Zoffix I meant that by the time it arrives to say, it's already the new object. 13:06
And more specifically, it's .gist that gets called. So `say $blah but "foo"` will only print "foo" for objects whose .gist calls .Str. And also, since `say Str:D` doesn't call anything and just unboxes it, it won't work then 13:07
Zoffix m: say "orig" but "no workie" 13:07
camelia orig
Zoffix m: say [] but "no .Str for you"
camelia []
Zoffix m: say [] but role { method gist { "no .Str for you" } } 13:08
camelia no .Str for you
Zoffix &
wictory[m] Hi! so this code hastebin.com/ulalikuvir gives me this error hastebin.com/pegezaxali what am I doing wrong? 13:09
(I want a NEXT phaser in the outer loop)
Geth doc/rafaelschipiura-mention-close-in-5to6: f000fe2a4f | rafaelschipiura++ (committed using GitHub Web editor) | doc/Language/5to6-perlfunc.pod6
Remove mention of phaser.
13:10
doc/rafaelschipiura-mention-close-in-5to6: 83e87839fa | rafaelschipiura++ (committed using GitHub Web editor) | doc/Language/5to6-perlfunc.pod6
Mention the close docs.
13:11
Zoffix wictory[m]: looks like a bug to me 13:15
m: FOO: for 1 { next FOO } 13:17
camelia ( no output )
Zoffix m: FOO: for 1 { NEXT {}; next FOO }
camelia labeled next without loop construct
in block <unit> at <tmp> line 1
Zoffix looks at sauce
Geth doc/rafaelschipiura-mention-close-in-5to6: 9979c173c6 | rafaelschipiura++ (committed using GitHub Web editor) | doc/Language/5to6-perlfunc.pod6
Change to a link to the close routine.
13:18
doc: 0f8ba22ff0 | rafaelschipiura++ (committed by Zoffix Znet) | doc/Language/5to6-perlfunc.pod6
Mention importance of closing handles in 5to6 (#1537)

  * Mention importance of closing handles in 5to6
  * Remove mention of phaser.
  * Mention the close docs.
  * Change to a link to the close routine.
wictory[m] Zoffix: ok, nice so I wasn't crazy. There is not much documentation on how to use phasers, so I wasn't sure if I had written it correctly. 13:19
Zoffix k, it's over my head :) Gonna file a bug report
Skarsnik hm how do I append a hash in a @ but without it trying to make the % a list? 13:20
m: my %h = a => 'b', b => 'c'; say %h; my @a; @a.append(%h); say @a.elems
camelia {a => b, b => c}
2
wictory[m] Zoffix: thanks
Skarsnik like I want 1 elem ^^
Zoffix wictory[m]: filed: rt.perl.org/Ticket/Display.html?id=132034 13:21
It's probably a 1-line fix. Just need to know where to put that one line :P
m: my %h = a => 'b', b => 'c'; say %h; my @a; @a.append($%h); say @a.elems
camelia {a => b, b => c}
1
Skarsnik ooh $
Zoffix Yeah, Hash does Iterable, so need to shove it into scalar container for it to be treated as one item 13:22
Skarsnik damn I think I will run into a circular dependancy stuff with libxml2 binding 13:23
since I can't not type field in c struct 13:24
Zoffix wictory[m]: once you learn more about phasers than what the docs say, you could improve the docs. Just need to edit this file: github.com/perl6/doc/blob/master/d...asers.pod6
:)
Zoffix &
travis-ci Doc build passed. rafaelschipiura 'Mention importance of closing handles in 5to6' 13:25
travis-ci.org/perl6/doc/builds/272040793 github.com/perl6/doc/commit/f4cd255c17b5
Geth doc: 8c00cec776 | rafaelschipiura++ (committed by Zoffix Znet) | doc/Language/variables.pod6
“my” docs mentioning dynamic variables (#1522)

  * “my” docs mentioning dynamic variables
Explains the relationship between lexical/package and normal/dynamic scope a bit more.
Asked in #1082 ... (6 more lines)
13:26
travis-ci Doc build errored. rafaelschipiura 'Change to a link to the close routine.' 13:27
travis-ci.org/perl6/doc/builds/272051218 github.com/perl6/doc/compare/83e87...79c173c62a
buggable [travis build above] ☠ Did not recognize some failures. Check results manually. 13:27
travis-ci Doc build passed. rafaelschipiura 'Mention the close docs.' 13:41
travis-ci.org/perl6/doc/builds/272048583 github.com/perl6/doc/compare/f000f...e87839fa88
Skarsnik hm I kinda screw... xmlio.h use xmlparser.h and xmlparser.h use xmlio.h 13:42
timotimo that's what #ifdef is for :P 13:45
Skarsnik yep in C
but how I work around that in Perl 6 ?
timotimo stub classes? move shared things to a third module?
Skarsnik I mean I could generate a bug huge binding, but kinda meh 13:46
or I should write a circular dependancy detection and merge all files involved 13:47
travis-ci Doc build passed. rafaelschipiura 'Remove mention of phaser.' 13:48
travis-ci.org/perl6/doc/builds/272048231 github.com/perl6/doc/compare/f4cd2...00fe2a4f77
Skarsnik timotimo, I probably should bother people to allow for circular dependancy x) 13:54
It will probably be common with C/C++ binding 13:55
timotimo could very well be :| 13:56
Skarsnik since it's a place you can't avoid typing 13:57
Skarsnik Should it be closed rt.perl.org/Ticket/Display.html?id=126688 ? it does not run indefinitly now 14:12
Zoffix Skarsnik: does it report "circular something something detected"? 14:15
Skarsnik skarsnik@devel:~/perl6/gptrixie$ ../rakudo/install/bin/perl6 -I. -e 'use A;'
===SORRY!===
Circular module loading detected trying to precompile /home/skarsnik/perl6/gptrixie/A.pm
with the last example
moritz python should really do the same
instead of just saying "cannot import name " 14:16
timotimo it'd probably be neat if it could output a little graph/tree of what parts are involved
if the circle is bigger than just two modules
Skarsnik could probably tell what in A trigger the circular?
Zoffix Skarsnik: I marked the ticket as TESTNEEDED now
buggable: tag TESTNEEDED 14:17
buggable Zoffix, There are 42 tickets tagged with TESTNEEDED; See fail.rakudo.party/t/TESTNEEDED for details
Zoffix ^ lots of low-hanging contibuting potential if anyone wants to jump in :)
Skarsnik dunno what you call testneeded? a test in roast? 14:18
Zoffix Skarsnik: yes. All bugs receive a test covering them, so we don't fix the same bug twice. 14:19
(and other impls don't make the same mistakes we did :P)
[Coke] .tell lizmat forgot to use tell ; your use of HLL in recent doc patch; it trips the spell checker, but rather than just add it, wondering if we can eliminate its use, since the only HLL we have is Perl 6 and that's what we're writing the docs for. 14:26
yoleaux [Coke]: I'll pass your message to lizmat.
[Coke] (docs are otherwise xt clean)
is there an alternative to 'rakudobrew build moar nom' to get the latest version, but tied to its own dir-by-commit-sha? 14:27
would probably help eliminate some of the already-compiled-but-not-what-you-wanted module issues I've been having with zef. 14:28
(nuke before build, maybe?)
Zoffix Do you even need rakudobrew? 14:29
[Coke] No, I could write my own shell script that does what I want.
Or I could try to make RB a little better.
Zoffix There's a minimally-tested bash alias for building latest rakudo: github.com/zoffixznet/r#linux
[Coke] Trying to be a good citizen.
thanks. 14:30
Zoffix And I've been using this for clean update with rakudobrew: rm -fr ~/.perl6; rm -fr ~/.zef; rm -fr ~/.rakudobrew/; git clone github.com/tadzik/rakudobrew ~/.rakudobrew; rakudobrew build moar; rakudobrew build zef; zef install TAP::Harness; 14:32
[Coke] I will work on one that does a bunch of nukes and updates in place so we don't have to redownload the rakudo/nqp/moarvm repos. 14:39
(but this is fine for how often I need to do this.) danke.
Geth doc/polymod-digits: 7c52912dbb | rafaelschipiura++ (committed using GitHub Web editor) | doc/Type/Int.pod6
Update Int.pod6
15:41
doc: 1fd4b0f3bf | (Aleks-Daniel Jakimenko-Aleksejev)++ | doc/Type/Int.pod6
Document the use of polymod for base conversion

Attempt to resolve issue #1436.
doc: 7c52912dbb | rafaelschipiura++ (committed using GitHub Web editor) | doc/Type/Int.pod6
Update Int.pod6
doc: d9929798de | rafaelschipiura++ (committed using GitHub Web editor) | doc/Type/Int.pod6
Merge pull request #1487 from perl6/polymod-digits

Document the use of polymod for base conversion
Geth doc/any-clarification: 537bea1613 | rafaelschipiura++ (committed using GitHub Web editor) | doc/Type/Any.pod6
Missing )
15:50
Geth doc/any-clarification: df2a8b917f | rafaelschipiura++ (committed using GitHub Web editor) | doc/Type/Any.pod6
Missing )
15:53
raschipi dejavu
sena_kun SHA is different though. 15:53
perlpilot Is LISP silently stealing ) from the P6 docs? 15:54
raschipi The ) added in the first one is summed in the second
lizmat clickbaiits p6weekly.wordpress.com/2017/09/04/...a-reading/ 15:57
yoleaux 14:26Z <[Coke]> lizmat: forgot to use tell ; your use of HLL in recent doc patch; it trips the spell checker, but rather than just add it, wondering if we can eliminate its use, since the only HLL we have is Perl 6 and that's what we're writing the docs for.
raschipi That pull request just need a decision for what to do about .sum Should it stay or should it go?
m: my $a; $a.sum; 15:59
camelia Use of uninitialized value of type Any in numeric context
in block <unit> at <tmp> line 1
raschipi m: my $a.=new; $a.sum;
camelia Cannot resolve caller Numeric(Any: ); none of these signatures match:
(Mu:U \v: *%_)
in block <unit> at <tmp> line 1
sena_kun raschipi, and `reduce` with `produce` explanations. Along with `collate` and `cache`. 16:04
raschipi Can't there be new pull requests when someone writes them? 16:05
sena_kun Dunno. Maybe it can. 16:05
m: say Any.sum; 16:06
camelia Use of uninitialized value of type Any in numeric context
0
in block <unit> at <tmp> line 1
sena_kun It actually produces "0".
raschipi I see now that you actually removed the sum method from there. 16:09
sena_kun Should I return it? 16:10
raschipi If you think so, you can create a new pull request.
This way we can merge it right now.
sena_kun `This method treats Any as 1-item list and sums it, returning 0, throwing a by-design error alongside(don't mind it too much)` 16:11
Geth doc/master: 4 commits pushed by Altai-man++, rafaelschipiura++ 16:12
sumdoc Is there "dataframe" like data structure in Perl 6? Like this pandas.pydata.org/pandas-docs/stabl...#dataframe 16:15
Zoffix If it's a lot different from 2D array, then nothing in core. 16:18
Zoffix or hash of arrays 16:18
timotimo it's different enough to a 2d array 16:19
but a hash of arrays could do what you want
just doesn't have the many constructors and labeling features and functions to work with them and such
Zoffix m: my %h = :one(1…3), :index<a b c>; %h<one>[1].say 16:20
camelia 2
piojo2 m: grammar F { token TOP { ^ <.indent(0)> 'foo' $ }; proto token indent(Int $level) {*}; token indent:sym<spaces>(Int $level) { ' ' ** {$level * 4} } }; say so F.parse(' foo'); 16:21
camelia Too few positionals passed; expected 2 arguments but got 1
in regex indent:sym<spaces> at <tmp> line 1
in regex indent at <tmp> line 1
in regex TOP at <tmp> line 1
in block <unit> at <tmp> line 1
piojo2 It seems like with a proto token, my arguments get eaten 16:22
regex token arguments work fine without a proto token 16:23
Zoffix piojo2: I see a ticket with that rt.perl.org/Ticket/Display.html?id...et-history 16:24
piojo2 Zoffix: yeah, looks the same 16:25
Zoffix m: grammar F { token TOP { ^ :my $*level = 0; <.indent> 'foo' $ }; proto token indent(|) {*}; token indent:sym<spaces> { ' ' ** {$*level * 4} } }; say so F.parse(' foo');
camelia False
piojo2 Wow, since 2014??
Zoffix possible workaround ^
piojo2: well, 2015 was about getting ready for first stable release; 2016 was about making performance usable; 2017 was about polishing various things like IO and stuff. :) 16:26
And it's not a painful feature (like, there's a workaround like above)
piojo2 Zoffix: thanks. Will that workaround nest like an equivalent lexical variable, as each new "my" hides the previous one? 16:28
Zoffix piojo2: yeah 16:29
piojo2 thanks
piojo2 Zoffix: I wish I were experienced enough to implement that feature myself. It's so seemingly small (since it's analogous to features that already exist) 16:41
Zoffix Yeah, I know the feeling :) Kinda wish we had chips in brains you could download knowledge onto :) 16:42
piojo2 :) 16:43
piojo2 m: grammar G { token TOP { :my $*val = 0; <match1(0)> }; token match1($val) { :my $*val = $*val+1; <recursive-match> }; token recursive-match { . } }; say so G.parse('x'); 17:10
camelia Use of uninitialized value of type Any in numeric context
True
in regex match1 at <tmp> line 1
piojo2 Apparently dynamic variables don't work the way I thought they did... 17:10
m: grammar G { token TOP { :my $*val = 0; <match1> }; token match1 { :my $*val = $*val+1; <recursive-match> }; token recursive-match { . } }; say so G.parse('x'); 17:11
camelia Use of uninitialized value of type Any in numeric context
True
in regex match1 at <tmp> line 1
piojo2 what am I doing wrong? Shouldn't I be able to create a new "my $*val" to shadow the old "$*val"? 17:12
perlpilot piojo2: variables are available immediately upon declaration. so, in "my $x = $x + 1", the second $x is the same as the first $x 17:15
[Coke] ugexe++ for zef install --serial (and for not making it the default) 17:16
piojo2 m: grammar G { token TOP { :my $*val = 0; <match1> }; token match1 { :my $oldval = $*val; :my $*val = $oldval+1; <recursive-match> }; token recursive-match { . } }; say so G.parse('x'); 17:20
camelia 5===SORRY!5=== Error while compiling <tmp>
Illegal post-declaration of dynamic variable '$*val';
earlier access must be written as CALLERS::<$*val>
if that's what you meant
at <tmp>:1
------> 3 match1 { :my $oldval = $*val; :my $*val7⏏…
piojo2 perlpilot: thanks. Is this new error happening because "my" affects the whole block, so it's illegal to refer to both the old $*val and the new "my $*val"? 17:21
m: grammar G { token TOP { :my $*val = 0; <match1> }; token match1 { :my $oldval = CALLERS::<$*val>; :my $*val = $oldval+1; <recursive-match> }; token recursive-match { . } }; say so G.parse('x'); 17:22
camelia True
perlpilot pretty much. Though it does give you the info you needed to make it work like you want.
piojo2 whoa, that error message was so crazy looking I actually didn't believe it! Next time, I won't think I'm smarter than the compiler... 17:23
perlpilot piojo2: you could have also said: ":my $*val = CALLERS::<$*val> + 1;" btw
piojo2 Yeah, it's just inertia to change things. Thanks!
perlpilot piojo2: any time.
perlpilot piojo2: btw, is your nick spanish or is that just a coincidence? 17:26
piojo2 Yeah, some Mexican guys used to call me that :P 17:26
I guess it's less rude than the English version would be 17:27
perlpilot wonders how hard it would be to make "my $x = <some expression involving $x>" generate that CALLERS message rather than what it currently does. 17:33
piojo2 perlpilot: It's not always wrong 17:39
echo -n 'hello\nworld' | perl6 -ne 'my $*line //= 0; say "line {$*line++}";'
perlpilot piojo2: in an initializer, it's probably not what the programmer intended. 17:40
piojo2 perlpilot: yeah, I'm still a little fuzzy on the rules. Especially since "my" changed a little bit between perl 5 and 6 (particularly, what it does with -n or -p) 17:44
don't take me as an example of what real programmers do :)
P6steve hullo - do we have ::T type variables yet? (REPL seems to barf if I go my ::T = Int;) ?? 17:48
raschipi docs.perl6.org/type/Any Looks much better. I wonder if we should leave it like it was because it's what motivated me to contribute to the docs.
ugexe m: sub foo(::T $val) { say "type: {T}"; say "value: {$val}" }; foo("1"); foo(1); 17:49
camelia Use of uninitialized value of type Str in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
type:
value: 1
type:
value: 1
in sub foo at <tmp> line 1
Use of uninitialized value of …
raschipi m: sub awoo ( ::T $a) { say ::T }; awoo 1; 17:49
camelia (Int)
ugexe m: sub foo(::T $val) { say "type: {T.^name}"; say "value: {$val}" }; foo("1"); foo(1);
camelia type: Str
value: 1
type: Int
value: 1
geekosaur P6steve, at present if something doesn;t work in the REPL then the first thing to do is see if it works in file or perl6 -e 17:50
because the REPL is filled with edge cases and hacks
P6steve aha - thanks!
Zoffix m: grammar { token TOP { :my $*v = 42; <foo> }; token foo { {dd $*v } <bar> }; token bar { :temp $*val = 100; <bez> }; token bez { {dd $*val } .+ } }.parse: "foo" 17:51
camelia Int $*v = 42
Can only use 'temp' on a container
in regex bar at <tmp> line 1
in regex foo at <tmp> line 1
in regex TOP at <tmp> line 1
in block <unit> at <tmp> line 1
Zoffix ... and I'm using it on... ?
piojo2: well, that would've been ^ a better solution, but apparently that's also broken :P
Oh, wait 17:52
m: grammar { token TOP { :my $*v = 42; <foo> }; token foo { {dd $*v } <bar> }; token bar { :temp $*v = 100; <bez> }; token bez { {dd $*v } .+ } }.parse: "foo"
camelia Int $*v = 42
Int $*v = 100
Zoffix It works if you name your variables right :P
geekosaur that error seems a trifle LTA 17:53
Zoffix Well, it gets a Failure 17:54
m: temp Failure.new 17:55
camelia Can only use 'temp' on a container
in block <unit> at <tmp> line 1
piojo2 haha
Zoffix m: say $*v.exception.^name 17:59
camelia X::Dynamic::NotFound
Zoffix maybe it could inspect stuff and explain or maybe that's overreach 18:00
piojo2 Zoffix: :temp definitely works. But strangely, I'm gonna keep :my $*val = CALLERS::<$*val>, because that's the option I'm more afraid of forgetting 18:02
I strongly prefer :temp, though
thanks!
Zoffix use temp then :)
piojo2 I'm too new. I'm using whatever there's the most danger of me forgetting about.
I have just a few scripts. I'll be able to grep them later and refresh my memory about how to do things. 18:03
Zoffix If it's something you forget, it's not worth remembering :P But for record, that's a Pseudo Package and there's a bunch of them: docs.perl6.org/language/packages#P...o-packages
perlpilot Zoffix: I occasionally forget the implicit *% in method signatures and that is totally worth remembering. 18:07
Zoffix yeah, could bite you. The other day I made datetime object passing :0h :0m and :0s for time and it "worked" because I wanted that time... but then I changed the values and realized the names were wrong :) 18:09
AlexDaniel hmmmm 18:23
LEAVE try close $fh;
what about LEAVE .close with $fh;
Zoffix what about LEAVE $fh andthen .close; 18:25
:) 18:26
LEAVE $fh.?close
(unless you typed $fh with IO::Handle :P) 18:27
Actrually, `my $fh does auto-close = "foo".IO.open` is what the cool kids use these days. 18:28
I think lizmat++ has plans to improve this area. 18:29
buggable: eco Trait::IO
buggable Zoffix, Trait::IO 'Helper IO traits': github.com/zoffixznet/perl6-Trait-IO
Zoffix (discussion about this topic in #moarvm: irclog.perlgeek.de/moarvm/2017-09-05#i_15119697 ) 18:30
AlexDaniel huggable: irc unicode colabti.org/irclogger/irclogger_log/perl6 18:31
huggable AlexDaniel, nothing found
AlexDaniel huggable: irc unicode :is: colabti.org/irclogger/irclogger_log/perl6
huggable AlexDaniel, Added irc unicode as colabti.org/irclogger/irclogger_log/perl6
AlexDaniel 🍕🍕🍕
Zoffix The comparison with Perl is overhyped IMO. You don't deal with handles in Rakudo as often as you do in Perl. Most common operations can be done with IO::Path that does the closing for you.
AlexDaniel: did everyone give up trying to fix our "official" log site? :) 18:32
mst same as in sensible perl you'd use IO::All or these days Path::Tiny 18:33
Zoffix uses Mojo::File
mst which is pretty much mojo's version of Path::Tiny 18:34
Zoffix :) 18:34
mst (my mojo code totally uses Mojo::File, my non-mojo code uses Path::Tiny)
AlexDaniel Zoffix: well, I looked at it, to me it seems like it's broken on *saving* the data, so I guess we've missed unicode characters of these couple of months
and then I didn't have time to look any further… but I need irc logs with unicode 18:35
AlexDaniel greppable6: LEAVE 18:38
greppable6 AlexDaniel, gist.github.com/aeb9f154fec340d8ba...f0752dde39 18:38
Zoffix reads IO::All docs with jelousy 18:39
AlexDaniel :S
Zoffix backwards reading... in-place editing. Sounds really cool.
mspo reading backwards rocks 18:43
Zoffix mst: do you read all the channels you're in or do you have a highlight for word "Perl"? :) 18:44
mst Zoffix: not all, but I often read in here because it's slowly teaching me more rakudo by osmosis 18:47
Zoffix Ah :)
mst and then if somebody's mentioning a low-level perl5 thing and there's a decent high-level one, I mention it so (a) you can better compare (b) if we've got any ideas you haven't you can steal them
mst still v. glad TWEAK made it in, for example 18:48
mst it seemed excessively silly to me that there was a case where rakudo's OO was blantaly inferior to the giant pile of duct tape we use in perl5 :) 18:48
Zoffix mst: someone showed me a picture of you being hugged. I don't know how I should feel about it. Is it a good picture because you're getting a hug, or is it a bad picture because of the slide accompanying it: www.flickr.com/photos/hercynium/5892245323/ 18:49
mst that was *hilarious* at the time, he jumped up from the audience to do it
also piers gives excellent hugs 18:50
Zoffix lol :D
mspo www.flickr.com/photos/hercynium/58...otostream/
Zoffix hehe :)
mspo nice use of > and >> operators in that IO::All 18:51
piojo2 I'm trying to parse YAML, and perl just told me "Cannot resolve caller <my token name>", then I put in some print statements, and the problem goes away whenever I print debug output, and comes back when I remove it 18:52
rakudo bug ⇒ time for bed 18:53
timotimo did you put { } into your regex to do the printing?
piojo2 timotimo: yes, why?
timotimo that has an influence on longest token matching semantics
piojo2 timotimo: this part doesn't have any branches. It's just in a [ <token1> <token2> ] +% '\n' 18:55
but thanks for pointing that out--I wouldn't have thought of it.
piojo2 I'll submit a rakudobug after I clean the junk out of the script and get permission to share the input file 18:57
moritz \o 19:08
I've created a small grammar that parses an indention-based language (mini-python): gist.github.com/moritz/46b8ff0a9f4...9bbf63a90e 19:09
Zoffix \o/ 19:10
Skarsnik :)
moritz I think somebody mentioned interest in such a thing... who was it? maybe raschipi? 19:13
Zoffix m: gist.github.com/moritz/46b8ff0a9f4...9bbf63a90e 19:14
camelia True
Inconsistent indentation: expected at most 0, got 4 spaces
Inconsistent indentation: expected at most 4, got 8 spaces
Unexpected indentation level: 2.
Zoffix moritz: dunno; though I saw piojo2 ask question about a grammar that had <indent> token 19:15
raschipi Not me. 19:28
Yuck, semantic whitespace. 19:29
Zoffix
.oO( b-b-but Rakudo has it! )
19:30
El_Che Zoffix: shut it. 19:32
:)
moritz it's called "parse it." :-)
Zoffix m: sub foo ($, $a?) { "There's {$a ?? "no" !! "a"} space between the name and (".say }; foo(1, 2); foo (1, 2); 19:33
camelia There's no space between the name and (
There's a space between the name and (
Zoffix :)
m: dd <1/2>; dd <1/2 > 19:34
camelia 0.5
RatStr.new(0.5, "1/2")
Skarsnik haha 19:35
it create a list
?
Zoffix m: say "e ehehe hehehe hehe" ~~ / [ \S+ ]**4/
camelia 「ehehe」
Zoffix m: say "e ehehe hehehe hehe" ~~ /:s [ \S+ ]**4/
camelia 「e ehehe hehehe hehe」
Zoffix Not to mention semantic whitespace after } :) 19:36
Skarsnik: no, <1/2> is a Rat literal, <1/2 > is a RatStr literal
m: dd <1/2>.^name; dd <1/2 >.^name; # a bit more clear
camelia "Rat"
"RatStr"
Skarsnik this is confusing x) 19:37
Zoffix Not really
Skarsnik m: "1/2".say
camelia 1/2
Skarsnik m: "1/2".Rat.say
camelia 0.5
Skarsnik m: "1/2 ".Rat.say
camelia 0.5
Zoffix Skarsnik: if there's an operator needed to produce a literal, you can wrap it into <> to make a literal-literal (without any operators). So Complex and Rat do that. But <> construct makes allomorphs, so if you meant to make an allomorph add moar whitespace to indicate you want the allomorph and not the literal 19:38
raschipi A little bit of semantic whitespace is fine, for obvious reasons.
Zoffix <42> for example is IntStr, not an Int, because you don't need an operator to make it (so there's no reason to write <42> instead of 42 if you meant an Int)
Zoffix m: <1*2**2>.^name.say 19:39
camelia IntStr
Zoffix And in that form you need operators, but it's a crazy lookin' thing so you get an IntStr instead of just an Int anyway 19:40
Zoffix m: <-42>.^name.say 19:43
camelia IntStr
Zoffix Bah. The operator-based explanation don't work :P
AlexDaniel loves the < > construct. It's just a thing that keeps on giving. 19:45
AlexDaniel: I have another present for you
AlexDaniel \o/
Zoffix m: say +<1*-2**2>
camelia 4
Zoffix m: say +1*-2**2
camelia -4
Zoffix :)
AlexDaniel but… but
Zoffix m: say (1*(-(2**2))) 19:46
camelia -4
Zoffix TBH, I don't know what the <1*2**2> form is even doing in there. 19:47
AlexDaniel committable6: all say +<1*-2**2>
Zoffix Is there some programming niche where this form is in common use or something?
AlexDaniel let's see how fresh it is 19:48
committable6 AlexDaniel, ¦all (44 commits): «4»
AlexDaniel okay
Zoffix I'm guessing it's some mathematical trick that mathematicians appreciate.
moritz I think it's mainly useful for something like 6.022*10**23
Zoffix Ah
Right. moritz++
moritz and then we couldn't help but generalize it to all bases and such
because 6.022e23 would be too easy, and not give a Rat, or something 19:49
Zoffix AlexDaniel: but wait! There's more!
m: say <1*—2**2>.^name
camelia Str
Zoffix :)
BooK say (6.022*10**23).WHAT
evalable6 (Rat)
BooK uh
BooK ah yes, Num are with explicit e notation 19:50
Zoffix Oh, U+2212 minus doesn't work at all in <...>.
AlexDaniel can you make <> execte arbitrary code? 19:52
then we can call it <>lang
… and have a separate documentation for its features /o\
quotable6: AlexDaniel .* present 19:53
moritz AlexDaniel: I don't think so
Skarsnik AlexDaniel, plz stap 19:54
quotable6 AlexDaniel, gist.github.com/055d419703a367f3e2...7c0d29e794
AlexDaniel Skarsnik: stop doing what exactly? 19:55
AlexDaniel is in the middle of doing 5 things at once 19:56
greppable6: \x4C\x45\x41\x56\x45 19:57
greppable6 AlexDaniel, gist.github.com/879cec80dcdf381e98...f219625988
AlexDaniel argh 19:58
Skarsnik AlexDianelable6, foo 19:59
don't mind me I am just tired x)
AlexDaniel okay I'll make greppable6 case-sensitive 20:00
if you need it to be case-insensitive, stick (?i) into it
AlexDaniel greppable6: LEAVE 20:01
greppable6 AlexDaniel, gist.github.com/63cd9da70c23a9886f...71ab239489 20:02
AlexDaniel greppable6: (?i)password
greppable6 AlexDaniel, gist.github.com/ef29995428d5b02253...59d994e806
Geth whateverable: d2f8ffda3f | (Aleks-Daniel Jakimenko-Aleksejev)++ | bin/Greppable.p6
Drop -i flag in greppable

It's easier to add (?i) when you need it.
20:07
whateverable: cac6af2a98 | (Aleks-Daniel Jakimenko-Aleksejev)++ | t/quotable.t
Enable quotable tests

Malformed UTF-8 issue has been resolved, so now it's ok.
samcv good * 20:32
moritz \o samcv 20:33
raschipi m: ('𝄵'.ord.uniname / 2).say 20:36
camelia Cannot convert string to number: base-10 number must begin with valid digits or '.' in '3⏏5MUSICAL SYMBOL CUT TIME' (indicated by ⏏)
in block <unit> at <tmp> line 1
raschipi Showing the string is very nice.
samcv m: say "FIVE"/10 20:44
camelia Cannot convert string to number: base-10 number must begin with valid digits or '.' in '3⏏5FIVE' (indicated by ⏏)
in block <unit> at <tmp> line 1
samcv :P
teatime has flash-backs to marching band 21:31
rindolf samcv: hi 21:45
samcv hey rindolf 22:16
rindolf samcv: sup? 22:20
samcv not much. moarvm hacking 22:22
teatime if I was gonna use a command-line spell-checker on *nix which one is current... aspell/ispell/etc.
samcv i use aspell 22:28
teatime thanks 22:34
MasterDuke that's what my kubuntu 17.04 machine defaults to 22:53
japhb Zoffix: FWIW, val(Str:D) is a bit ... overpowered. The notation you found is only a fraction of its disturbing power. ;-) 23:12
Zoffix eyes docs.perl6.org/routine/val 23:17
If the power is not documented, I'd say it's not a power, but a bug :P
raschipi Where are ou guys using val? 23:22
Zoffix m: <\qq[{say "Pwned lulz!"}]> 23:22
camelia Pwned lulz!
Zoffix AlexDaniel: moritz ^ you *can* execute arbitrary code in < > 23:23
AlexDaniel okay
very good
Zoffix raschipi: it's what the < > uses under the hood
IIRC
AlexDaniel Zoffix: how did you find this? 23:25
Zoffix AlexDaniel: I new \qq[] escape existed in "" quotes, so I tried it out in <> 23:26
AlexDaniel oh
didn't know both
Zoffix++
Zoffix raschipi: and I think japhb++ is the implementor of this stuff
AlexDaniel TIL ← so that you can find it in IRC logs :) 23:27
Zoffix AlexDaniel: oh, then it might be new to you that it also works in single quotes
m: my $x = "Look mah!, I'm interpolating \\o/"; say '\qq[$x]'
camelia Look mah!, I'm interpolating \o/
AlexDaniel well, I hate single quotes tbh
Zoffix :) 23:28
AlexDaniel thinking about autoreplacing them all to 「」
it's really weird that you can do crazy stuff like this but not \n
Zoffix :)
AlexDaniel ‘useless quotes’
MasterDuke i think ShimmerFairy implemented one of the vals 23:30
raschipi japhb: Tell us more about the power of val... 23:31
Zoffix
.oO( the power of val compells you! )
23:32
s: &val
SourceBaby Zoffix, Sauce is at github.com/rakudo/rakudo/blob/c39d...hs.pm#L151
Zoffix m: dd ":36[1,2,3]".&val.Numeric 23:34
camelia 1371
Zoffix That's the only other magik I see in the sauce that I didn't know it did :) 23:36
m: say <−42>.Numeric
camelia -42
Zoffix m: say <10*10**−42>.Numeric
camelia Type check failed in binding; expected Int but got Num (1e-41)
in block <unit> at <tmp> line 1
Zoffix k, so it's my fault for not fixing the − thoroughly enough :P 23:37