»ö« 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 sufrostico joined 00:05 wamba left 00:07 awwaiid left, Sgeo_ joined 00:08 sufrostico left, awwaiid joined 00:09 lucasb left 00:10 sufrostico joined 00:18 cpage_ joined 00:19 firefish5000 joined 00:31 awwaiid left 00:32 awwaiid joined 00:33 bjz joined
seatek Should stuff like $*HOME and $*TMPDIR work cross-platform to Windows too? 00:47
skids Those two should, I think. 00:48
p3rln00b Yup
skids Though I don't know what $*HOME ends up being when nobody is logged in. 00:49
seatek k. thanks. not that I care really. just curious
wonder if they use something like c:\Users\<userid> for $*HOME
skids I think $HOME in cmd may even be a thing. Memory is fuzzy. 00:50
p3rln00b I get "C:\Users\p3rln00b".IO for it
00:50 MasterDuke joined
p3rln00b "C:\Users\p3rln00b\AppData\Local\Temp".IO for $*TMPDIR 00:51
seatek interesting stuff.
oh my gosh
geekosaur cmd should be using things like %HOME% but that'd be odd, the windows version is something longer 00:54
00:54 awwaiid left, cyphase left
p3rln00b %UserProfile% 00:55
00:55 awwaiid joined
seatek i've tried using stuff like cygwin before in windows. it always feels like i'm in this tiny little plastic oasis, with giant walls surrounding me that may come crashing down at any moment to squash me 00:58
00:59 cyphase joined
skids Yeah, until you fire up find and actually find stuff windows search cannot. 00:59
00:59 cyphase left 01:00 cyphase joined
seatek i was hoping for dd there one time, i remember. but i couldn't find it anywhere. strange that cygwin wouldn't have such a useful thing 01:01
maybe they do now
firefish5000 I don't think they were able to properly implement dd in cygwin, I need it often since windows cannot recognize my flash drives when I image them with isos 01:02
MasterDuke try dc3dd 01:03
seatek MasterDuke, interesting 01:05
MasterDuke i haven't used it in recent Windows, but it worked fine on XP years ago 01:06
seatek i wonder if there will ever be any ide's that can handle perl6 stuff. seems possible with formal class and sub and method structures, and the fact that variables always looks like variables. well, mostly. 01:10
01:14 awwaiid left 01:15 awwaiid joined
geekosaur I am vaguely recalling that vista and later removed access to the device level stuff that was being used? 01:17
seatek oh my gosh, there's tab completion in the interactive perl6 interpreter
geekosaur like, restricted to SYSTEM only as an anti-virus/worm measure or something like that 01:18
(not even LSA)
unless I have confused those, LSA is the administrator account and SYSTEM is the user that the privileged parts of Windows run as? 01:19
seatek i sure don't know. I went from OS/2 Warp to Linux -- Windows for games, and to know what other people are dealing with 01:20
firefish5000 I wish I could get the Readline module to work on my gentoo system. It failes the copy-keymap test for me. Anyone know if it works with libreadline-6.3? 01:24
seatek firefish5000, i could try to emerge readline 6.3 on my gentoo box and give it a whirl 01:31
firefish5000 if it works for you, I would like to know what version of readline your currently using. lets not try breaking another system
seatek you're wanting Term::Readline? 01:33
you're wanting Term::ReadLine?
firefish5000 I was aiming for Readline, for perl6 cli 01:34
seatek ah.. ha baba ;) not sure if i put perl6 on here... checking
oo i did 01:35
installing readline
all tests passed. your computer is broken 01:36
firefish5000 lol, thanks for going through the trouble to test it.
skids tries to build the habit of leaving trailing commas on all lists for future editability.
Not used to the language not barfing over that and adding nil elements.
firefish5000 what version of sys-libs/readline and rakudo are you using? 01:37
01:37 awwaiid left
skids .o(Once I've built the habit, then I'll no doubt have to unbuild it when I do something else.) 01:37
seatek firefish5000, I'm using readline libs 6.3p8-r2 from the Gentoo sources
firefish5000 hmm, well, that confirms it. my computer is broken! Time to through it out, lol 01:38
seatek :)
01:38 awwaiid joined 01:41 _slade_ joined
seatek firefish5000, oh sorry -- moar 2016.09.1.gdebb.859 01:42
01:46 rudolfochrist left 01:47 ilbot3 joined 01:52 Xliff joined 02:01 awwaiid left 02:02 awwaiid joined 02:22 sufrostico left 02:25 Actualeyes joined 02:32 awwaiid left, pierre_ joined 02:33 awwaiid joined 02:43 pierre_ left 02:52 noganex_ joined 02:55 noganex left 02:56 awwaiid left, Actualeyes left 02:57 bjz left, awwaiid joined 03:10 AlexDaniel left 03:16 yqt left 03:23 bjz joined 03:27 awwaiid left, awwaiid joined 03:31 pierre_ joined 03:32 xxdxdd left 03:45 bjz left 03:46 bjz joined 03:50 woolfy left, awwaiid left, woolfy joined 03:51 awwaiid joined 04:13 awwaiid left 04:15 awwaiid joined 04:22 cpage_ left 04:30 Actualeyes joined, BenGoldberg left 04:31 khw left 04:34 _slade_ left 04:35 awwaiid left, awwaiid joined 04:40 hobbs joined, hobbs left, hobbs joined, awwaiid left 04:41 awwaiid joined 04:43 Guest94342 is now known as ponbiki 04:44 skids left 04:49 Cabanossi left 04:52 Actualeyes left 04:53 Cabanossi joined 04:54 pierre_ left 04:59 awwaiid left, awwaiid joined 05:02 pierre_ joined 05:03 Actualeyes joined 05:04 bjz left, bjz joined 05:12 Actualeyes left 05:15 pierre_ left 05:16 fudje joined 05:18 _slade_ joined 05:22 awwaiid left 05:23 awwaiid joined 05:34 pierre_ joined 05:38 Actualeyes joined
fudje m: role A[$B] { method C { $B } }; say A['D'].C; 05:43
camelia rakudo-moar 2285d3: OUTPUT«D␤»
fudje m: #|{ I am some pod } role A[$B] { method C { $B } }; say A['D'].C;
camelia rakudo-moar 2285d3: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Could not instantiate role 'A':␤Too few positionals passed; expected 2 arguments but got 1␤at <tmp>:1␤»
fudje :'(
05:45 awwaiid left 05:46 awwaiid joined 05:50 cpage_ joined 06:06 fudje left 06:09 awwaiid left, awwaiid joined 06:25 Actualeyes left 06:27 awwaiid left 06:28 awwaiid joined 06:43 mr-foobar joined
grondilu I'm not sure #| can be used on-line 06:47
06:49 Actualeyes joined 06:50 awwaiid left 06:52 awwaiid joined 06:58 darutoko joined 06:59 rgrinberg left 07:02 FROGGS joined
ShimmerFairy grondilu: the problem is with roles and multi-line declarator blocks in general: rt.perl.org/Public/Bug/Display.html?id=128810 07:05
07:24 seatek left 07:25 awwaiid left, awwaiid joined 07:31 RabidGravy joined 07:37 domidumont joined 07:41 domidumont left 07:42 domidumont joined 07:48 awwaiid left 07:49 bjz left 07:50 awwaiid joined 07:56 vimal2012 joined, vimal2012 left, vimal2012 joined 07:59 vimal2012 left 08:01 eliasr joined 08:02 nadim joined 08:05 bjz joined 08:08 itaipu joined 08:11 awwaiid left, domidumont left 08:13 awwaiid joined 08:16 rurban joined, rurban left 08:19 pierre_ left 08:26 bjz left, bjz joined 08:36 awwaiid left, bjz left, bjz_ joined 08:37 awwaiid joined 08:42 awwaiid left, mohae_ joined 08:43 psch_ is now known as psch 08:44 _slade_ left 08:45 wamba joined 08:46 mohae left 08:49 itaipu left 08:57 d^_^b joined, d^_^b left, d^_^b joined 08:58 pecastro_ joined
FROGGS o/ 09:03
09:07 camelia left 09:08 camelia joined 09:09 ChanServ sets mode: +v camelia 09:10 domidumont joined 09:12 domidumont left 09:13 vimal2012 joined, vimal2012 left 09:14 rindolf joined, vimal2012 joined 09:17 andrzejku_ joined
andrzejku_ hello my friends :) 09:17
09:18 canopus left, vimal2012 left 09:24 vimal2012 joined 09:25 vimal2012 left 09:27 canopus joined 09:35 pecastro_ left 09:37 pierre_ joined 09:38 rudolfochrist joined 09:44 domidumont joined, ggoebel left 09:57 ggoebel joined 10:02 breinbaas left 10:03 breinbaas joined 10:05 rudolfochrist left 10:06 TimToady left, setty1 left 10:07 TimToady joined 10:17 rindolf left, ocbtec joined 10:24 TimToady left 10:26 TimToady joined 10:36 canopus left 10:39 canopus joined 10:43 rindolf joined 10:46 pierre_ left 10:54 Actualeyes left 10:56 ocbtec left, TEttinger left 11:02 labster left 11:03 awwaiid joined 11:09 Actualeyes joined 11:12 firefish5000 left 11:22 rindolf left 11:26 Ulti_ is now known as Ulti 11:27 awwaiid left 11:28 awwaiid joined 11:35 pierre_ joined 11:37 pierre_ left, pierre_ joined 11:48 telex joined
RabidGravy boo 11:49
12:00 sftp left 12:02 sftp joined
FROGGS /o\ 12:07
12:08 setty1 joined 12:14 awwaiid left
dalek c: a7716fc | (Zoffix Znet)++ | README.md:
Clarify deps installation instructions

Per discussion[^1], revert previous commit[^2] and clarify how to get rakudobrew going The Right Way™ by updating the shim with `rehash` command.
  [1] github.com/perl6/doc/commit/1b3cf9...t-19334016
  [2] github.com/perl6/doc/commit/1b3cf9...596674a93a
12:20
12:38 lucasb joined 12:39 BenGoldberg joined
lucasb #129830 12:57
RT #129830
:|
so, it seems any parameterized role has problems with gist? 12:58
m: Positional.gist
camelia ( no output )
lucasb m: Positional[Int].gist
camelia rakudo-moar 2285d3: OUTPUT«Cannot unbox a type object (NQPMu) to a str.␤ in block <unit> at <tmp> line 1␤␤»
lucasb same thing for Associative[T], Rational[T, U]
m: role R[::T] {}; say R.gist 12:59
camelia rakudo-moar 2285d3: OUTPUT«(R)␤»
lucasb m: role R[::T] {}; say R[Int].gist
camelia rakudo-moar 2285d3: OUTPUT«Cannot unbox a type object (NQPMu) to a str.␤ in block <unit> at <tmp> line 1␤␤»
psch m: role R[::T] {}; say R[Int].new.gist 13:01
camelia rakudo-moar 2285d3: OUTPUT«R[Int].new␤»
psch m: put Int.gist
camelia rakudo-moar 2285d3: OUTPUT«(Int)␤»
psch m: role R[::T] {}; say R[Int].^mro
camelia rakudo-moar 2285d3: OUTPUT«No such method 'mro' for invocant of type 'Perl6::Metamodel::CurriedRoleHOW'␤ in block <unit> at <tmp> line 1␤␤»
psch m: role R[::T] {}; say R[Int].new.^mro
camelia rakudo-moar 2285d3: OUTPUT«((R[Int]) (Any) (Mu))␤»
psch m: role R { }; put R.gist 13:02
camelia rakudo-moar 2285d3: OUTPUT«(R)␤»
gfldex m: role R[::T] {}; R[Int].gist; CATCH{ default { say .backtrace.full } }
camelia rakudo-moar 2285d3: OUTPUT« in block at gen/moar/m-CORE.setting line 17361␤ in method join at gen/moar/m-CORE.setting line 17356␤ in sub infix:<~> at gen/moar/m-CORE.setting line 13936␤ in method gist at gen/moar/m-CORE.setting line 1393␤ in block <unit> at <tmp> line …»
psch m: role R[::T] {}; say R[Int].^name 13:05
camelia rakudo-moar 2285d3: OUTPUT«R[Int]␤»
psch m: role R[::T] {}; say R[Int].^shortname 13:06
camelia rakudo-moar 2285d3: OUTPUT«No such method 'gist' for invocant of type 'NQPMu'␤ in block <unit> at <tmp> line 1␤␤»
psch there
so shortname in CurriedRoleHOW has a problem
lucasb: ^^^ in case you wanna look what's wrong there
lucasb shortname comes from role Perl6::Metamodel::Naming 13:07
is that the case that it is not getting set for curried roles?
oh, nevermind
I don't have the skills to navigate the Perl6::Metamodel:: namespace :) 13:09
psch don't give up! :)
lucasb nqp-m: class C { has $!name; method name() { $!name } }; C.new.name.gist 13:17
camelia nqp-moarvm: OUTPUT«Cannot find method 'gist' on object of type NQPMu␤ at <tmp>:1 (<ephemeral file>:<mainline>)␤ from gen/moar/stage2/NQPHLL.nqp:1428 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/NQPHLL.moarvm:eval)␤ from gen/moar/stage2/NQPHLL.nqp:1631 (/home/camelia/rakud…»
lucasb idk what my snippet eval is supposed to mean, but... yeah. my guess is that no code is setting the shortname of curried roles :) 13:18
13:19 awwaiid joined
psch lucasb: "curried role type objects", actually :) 13:27
lucasb: when it's punned it works
m: role R[::T] { }; put R[Int].new.gist
camelia rakudo-moar 2285d3: OUTPUT«R[Int].new␤»
lucasb indeed, correct 13:28
psch lucasb: please RT that if it's not yet
lucasb it already is #129830
psch ah okay 13:29
13:30 kaare_ left 13:34 perlawhirl joined 13:43 awwaiid left 13:44 awwaiid joined 13:49 rindolf joined 14:04 wamba left 14:06 awwaiid left 14:07 awwaiid joined 14:14 AlexDaniel joined 14:29 awwaiid left 14:33 awwaiid joined 14:34 skids joined 14:36 yqt joined 14:43 awwaiid left 14:45 awwaiid joined 14:46 ocbtec joined 14:51 rgrinberg joined, darutoko- joined 14:54 darutoko left 14:55 rindolf left 14:58 domidumont left, domidumont joined 14:59 rindolf joined 15:01 khw joined 15:05 nadim left 15:08 bazzaar joined
bazzaar o/ perl6 15:09
m: my @c = <a b c>; my @n = <1 2 3>; for @c Z @n -> $cv, $nv { say $cv ~ ":" ~ $nv }; 15:10
camelia rakudo-moar 2285d3: OUTPUT«a 1:b 2␤Too few positionals passed; expected 2 arguments but got 1␤ in block <unit> at <tmp> line 1␤␤»
15:11 awwaiid left 15:12 awwaiid joined, bioduds joined
bazzaar not sure why that code fails, I thought I passed 2 args with the Z operator, to the block 15:12
m: my @c = <a b c>; my @n = <1 2 3>; for (@c Z @n) -> $cv, $nv { say $cv ~ ":" ~ $nv }; 15:13
camelia rakudo-moar 2285d3: OUTPUT«a 1:b 2␤Too few positionals passed; expected 2 arguments but got 1␤ in block <unit> at <tmp> line 1␤␤»
AlexDaniel m: sub infix:<⁢> ($a, $b) is equiv(&infix:<*>) { $a [*] $b }; my \a = 5; my \b = 10; sa⁢y ab + 42 15:14
camelia rakudo-moar 2285d3: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared routines:␤ ab used at line 1␤ sa used at line 1. Did you mean 'so'?␤ y used at line 1 (in Perl 6 please use tr instead)␤␤»
AlexDaniel m: sub infix:<⁢> ($a, $b) is equiv(&infix:<*>) { $a [*] $b }; my \a = 5; my \b = 10; sa⁢y a⁢b + 42
camelia rakudo-moar 2285d3: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared routines:␤ sa used at line 1. Did you mean 'so'?␤ y used at line 1 (in Perl 6 please use tr instead)␤␤»
AlexDaniel m: sub infix:<⁢> ($a, $b) is equiv(&infix:<*>) { $a [*] $b }; my \a = 5; my \b = 10; say a⁢b + 42
camelia rakudo-moar 2285d3: OUTPUT«92␤»
15:16 seatek joined
gfldex m: my @c = <a b c>; my @n = <1 2 3>; for @c Z @n -> [$cv, $nv] { say $cv ~ ":" ~ $nv }; 15:18
camelia rakudo-moar 2285d3: OUTPUT«a:1␤b:2␤c:3␤»
gfldex m: sub infix:<|Z>(\a, \b){ (a Z b).flat }; my @c = <a b c>; my @n = <1 2 3>; for @c |Z @n -> $cv, $nv { say $cv ~ ":" ~ $nv }; 15:20
camelia rakudo-moar 2285d3: OUTPUT«a:1␤b:2␤c:3␤»
bazzaar gfldex: aaah, the penny has dropped, thank you very much
bioduds hey all, cheers!
AlexDaniel gfldex: is there any difference between using [] and () in this case? 15:21
m: my @c = <a b c>; my @n = <1 2 3>; for @c Z @n -> ($cv, $nv) { say $cv ~ ":" ~ $nv };
camelia rakudo-moar 2285d3: OUTPUT«a:1␤b:2␤c:3␤»
gfldex don't think so
it's a little easier to read in my eyes
bazzaar I found the example on Perl6 maven, after searching for documentation on how to iterate over multiple arrays in parallel. 15:25
AlexDaniel committable6: pre-glr my @c = <a b c>; my @n = <1 2 3>; for (@c Z @n) -> $cv, $nv { say $cv ~ ":" ~ $nv }; 15:26
committable6 AlexDaniel, ¦«pre-glr»: a 1:b 2␤Too few positionals passed; expected 2 arguments but got 1␤ in block <unit> at /tmp/Qn8aGvF3HJ:1␤ «exit code = 1»
bazzaar presumably the syntax has been tightened up since that post.
AlexDaniel uh, this result does not make any sense 15:27
what's going on there? 15:28
why was it “a 1:b 2” ?
aah
committable6: pre-glr my @c = <a b c>; my @n = <1 2 3>; for (@c Z @n) -> $cv { say $cv };
committable6 AlexDaniel, ¦«pre-glr»: a 1␤b 2␤c 3
AlexDaniel committable6: pre-glr my @c = <a b c>; my @n = <1 2 3>; for (@c Z @n) -> $cv { say $cv.perl };
committable6 AlexDaniel, ¦«pre-glr»: $("a", "1")␤$("b", "2")␤$("c", "3")
perlawhirl like this
m: my @c = <a b c>; my @n = <1 2 3>; for @c Z @n -> ($cv, $nv) { say $cv ~ ":" ~ $nv }; 15:29
camelia rakudo-moar 2285d3: OUTPUT«a:1␤b:2␤c:3␤»
AlexDaniel committable6: pre-glr my @c = <a b c>; my @n = <1 2 3>; for (@c Z @n) { say .[0] ~ ‘:’ ~ .[1] };
committable6 AlexDaniel, ¦«pre-glr»: a:1␤b:2␤c:3
AlexDaniel yeah, that's it!
DrForr RabidGravy: I took the repo down only because I just got tired of the approach I was taking. It'll be back up n a few hours.
15:30 awwaiid left 15:31 awwaiid joined
bazzaar I'm using perl6 to parse a horribly formatted text file, I am now back on track after your help, thank you. Perl6 is brilliant, so intuitive. 15:33
AlexDaniel bazzaar: if interested, you can take a look at this: perl6advent.wordpress.com/2015/12/...-refactor/
bazzaar AlexDaniel: thanks for the help, and for the link, I will check it out. 15:34
15:34 kaare_ joined
AlexDaniel bazzaar: well, it's not something you should care about today :) still a good read if you want to see how we got here 15:35
dalek c: 0765d1d | gfldex++ | doc/Language/operators.pod6:
better description and example for Z
15:36
c: 34c6f3c | gfldex++ | doc/Language/operators.pod6:
meta-Z is no the same thing as Z, link there
gfldex bazzaar++ # for asking the right question 15:37
15:37 pierre_ left
perlawhirl bazaar: the main thing to remember in this particular case is that zip (or Z) creates a list of lists, so you need to destructure that list in the signature of the loop 15:39
ie, you just needed to relocate your brackets downstream :D 15:40
from: for (@c Z @n) -> $cv, $nv { ... }
to : for @c Z @n -> ($cv, $nv) { ... }
gfldex m: my @c = <a b c>; my @n = <1 2 3>; for (@c Z @n).kv -> $cv, $nv { say $cv ~ ":" ~ $nv }; 15:41
camelia rakudo-moar 2285d3: OUTPUT«0:a 1␤1:b 2␤2:c 3␤»
perlawhirl kv is different in that it actually creates 2 loop items
zip creates a list... so it needs to be destructured in a sig... or subscripted in the loop (ie $_[0] and $_[1]) 15:42
15:43 bjz_ left 15:44 eliasr left
bazzaar perlawirl: thanks for the explanation of what the bracket syntax of the signature is doing 15:44
AlexDaniel m: my @c = <a b c>; my @n = <1 2 3>; .say for @c Z[&(* ~ *)] @n 15:45
camelia rakudo-moar 2285d3: OUTPUT«a1␤b2␤c3␤»
AlexDaniel hehe
m: my @c = <a b c>; my @n = <1 2 3>; .say for @c Z[&(* ~ ‘:’ ~ *)] @n
camelia rakudo-moar 2285d3: OUTPUT«a:1␤b:2␤c:3␤»
AlexDaniel m: my @c = <a b c>; my @n = <1 2 3>; .say for @c Z[&(-> $a, $b { “$a:$b” } )] @n 15:46
camelia rakudo-moar 2285d3: OUTPUT«a:1␤b:2␤c:3␤»
bazzaar AlexDaniel: so you've eliminated the block, right ... I like it 15:48
MasterDuke m: my @c = <a b c>; my @n = <1 2 3>; .say for @c Z[&("{*}:{*}")] @n 15:49
camelia rakudo-moar 2285d3: OUTPUT«No such method 'CALL-ME' for invocant of type 'Str'␤ in block <unit> at <tmp> line 1␤␤»
perlawhirl I just figured you were trying to wrap your head around the Z opertor. if your really do just want to colon-separate them...
m: my @c = <a b c>; my @n = <1 2 3>; say (@c Z @n).map: *.join(':')
camelia rakudo-moar 2285d3: OUTPUT«(a:1 b:2 c:3)␤»
perlawhirl or this would work too: (@c Z @n)».join(':') 15:50
bazzaar TIMTOWTDI ... brilliant 15:51
AlexDaniel MasterDuke: :P you can't put * inside stuff like that 15:53
committable6: 2015.12 my @c = <a b c>; my @n = <1 2 3>; .say for @c Z[&(* ~ ‘:’ ~ *)] @n 15:54
committable6 AlexDaniel, ¦«2015.12»: a:1␤b:2␤c:3
AlexDaniel ok
15:54 awwaiid left 15:56 awwaiid joined
MasterDuke yeah, i sometimes forget they're more than just placeholders 15:56
bazzaar perlawhirl: actually one of the input arrays to the Zip op (in my file) is an AofA, so I'm just steadily working down through the data levels
perlawhirl AlexDaniel: re our conversation earlier on »... yes it does seem it's more deepmap than map... but i think the huffman coding is sound. my take on » is that it's aimed at huffmanising quick method calls, rather than complex functions 15:58
ie, if you just wanna uppercase a list of names, ».uc is shorter than .map: &uc
but the deepmap like properties come into play in unexpectedly helpful ways 15:59
15:59 skids left
perlawhirl m: say <john paul geoge ringo>.classify(*.comb[0])».uc 15:59
camelia rakudo-moar 2285d3: OUTPUT«{g => [GEOGE], j => [JOHN], p => [PAUL], r => [RINGO]}␤»
perlawhirl uc acts on the items i was classifying, not on the Hash that .classify created
16:00 kenh83 joined, Khisanth joined
AlexDaniel I'm not sure I get it. Like maybe, but I'm just thinking… if .deepmap is more useful than .map (which » existence seems to imply?), then why is it called .deepmap and not .dp or something… 16:01
.dm I mean
perlawhirl well » (and by extension, .deepmap) acts like .map in a lot of circumstances. it's huffmanizing a lot of common things you would normally need map for... as well as some things you would need deepmap for 16:03
AlexDaniel hmm
perlawhirl i think ».&{ ... } is a bad use-case for » 16:04
16:04 bioduds left
gfldex i'm getting careful with » to because I can't test autothreading that isn't there yet 16:05
perlawhirl i think it's better suited for method calls. if you need anything more complex, a map ( or deepmap, as the case might be ) is a better option
gfldex: agree, though i think i recall jnthn saying ».foo should eventually implement something (probably) identical to .hyper.map( *.fo )o 16:06
erm , i mean.. .hyper.map( *.foo )
but even .hyper is a little wonky... or has that beed fixed recently 16:07
*been
gfldex threading in general is buggy, including segfaults, but we got a golf of (at last one) of those bugs now 16:08
AlexDaniel gfldex: I think that we've got a good grip on it with MasterDuke 16:12
once #129781 is resolved we will report the next issue… and we will repeat that until bisectable fucking works ;)
right now I think the biggest problem is that there are not many people willing to work on such bugs 16:13
lucasb gfldex: you just inserted an example about Z in the docs, but you forgot the parentheses, right? 16:14
AlexDaniel like you know, it's nice to have jnthn but it would be better to have 5 jnthns
lucasb for <a b c> Z <1 2 3> -> $l, $r { say "$l:$r" }
for <a b c> Z <1 2 3> -> ($l, $r) { say "$l:$r" }
gfldex i did 16:15
lucasb well, parentheses or brackets, whichever style is prefered
AlexDaniel perlawhirl: I am not sure if I understand your idea of “X is a bad use-case for »”. If you want it to be parallelized if possible, then you use », if you don't – you use map/deepmap 16:16
whether it is ».&{} or a plain method call is irrelevant, isn't it?
dalek c: 2e00e39 | (Tom Browder)++ | doc/Language/modules.pod6:
clarify point

description is still a little muddy
c: 6a52de1 | gfldex++ | doc/Language/operators.pod6:
fix example
lucasb gfldex++ thanks 16:17
16:17 awwaiid left
perlawhirl probably a bad turn of phrase on my part... not really a bad use case, per se 16:18
16:19 awwaiid joined
perlawhirl until » is parallelised in at least 1 implementation of perl6 it's kind of a moot point 16:20
timotimo we used to have the execution order of >> be scrambled
it got taken out, probably due to performance concerns? 16:21
lucasb what does it mean that Z metaoperator is not the same thing as Z infix?
gfldex it did a ».pick on the whole list
timotimo well, Z infix is Z,
lucasb yes, that's my understanding as well 16:22
timotimo you can't use Z, on an operator
AlexDaniel m: 42 xx (2 ** 62)
camelia rakudo-moar 2285d3: OUTPUT«(signal SEGV)WARNINGS for <tmp>:␤Useless use of constant integer 42 in sink context (line 1)␤»
timotimo where did you read that?
perlawhirl lucasb: im confused... maybe they meant Z infix and metaop is not the same as zip()
AlexDaniel ok, this one is still there
dalek c: 0219118 | (Tom Browder)++ | doc/Language/modules.pod6:
use title case for consistency

grammar fix
16:23 decent_ is now known as decent
gfldex i wanted to link from meta-Z to Z, because meta-Z didn't really say what was going on 16:23
and they don't behave the same way. Flattening is a little different. 16:24
lucasb hmm, I'm not sure :)
say (zip <a b c>, <1 2 3>).perl
say (<a b c> Z, <1 2 3>).perl 16:25
say (<a b c> Z <1 2 3>).perl
all 3 returns the same thing
gfldex m: dd (<1 2 3> Z~ <a b c>);
camelia rakudo-moar 2285d3: OUTPUT«("1a", "2b", "3c").Seq␤»
gfldex the result is flat already
perlawhirl lucasb: zip( @AoA ) will not transpose the @AoA... but [Z] @AoA will
lucasb say ([Z] <a b c>, <1 2 3>).perl 16:26
all 4 returns the same thing :D
perlawhirl: I may not have understood what you said 16:27
timotimo AlexDaniel: oh, that must be an overflow when multiplying the slot size with the number of elements requested
perlawhirl m: my @AoA = ('A'..'I').rotor: 3; say zip(@AoA);
camelia rakudo-moar 2285d3: OUTPUT«(((A B C) (D E F) (G H I)))␤»
perlawhirl m: my @AoA = ('A'..'I').rotor: 3; say [Z] @AoA;
camelia rakudo-moar 2285d3: OUTPUT«((A D G) (B E H) (C F I))␤»
perlawhirl zip() treats it's values as scalar 16:28
ermm, it's arguments
AlexDaniel timotimo: fwiw it is #126014
perlawhirl that's the only zip related difference I'm aware of... I was not aware of any difference between infix Z and metaop Z 16:29
16:29 synopsebot6 joined
AlexDaniel timotimo: and yeah, that makes sense 16:29
perlawhirl but i'm welcome to be show how they differ so I don't misuese it :D
timotimo AlexDanie+│ timotimo: fwiw it is #126014
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=126014
MasterDuke added valgrind output 16:30
timotimo so, how do i properly check for multiplication overflow? internet says i have to check before doing the multiplication so that i don't run into undefined behaviour that could make any test "after the multiplication" bogus
perlawhirl bedtime for me... 3:30 am here :/
g'night #perl6 16:31
lucasb perlawhirl: I wasn't aware of that. thanks for clarifying
timotimo gnite perlawhirl
lucasb perlawhirl: good night
16:31 perlawhirl left 16:33 kaare_ left, kaare_ joined
AlexDaniel timotimo: is it signed or unsigned? 16:34
timotimo the result is size_t
but yeah, unsigned 16:36
arnsholt In that case, a*b <= MAX_INT should be equivalent to a <= MAX_INT/b 16:37
Modulo floating-point bugbears due to division
timotimo it's rather likely that the element size is a simple and small value 16:38
but yeah, i'll try that
lucasb nqp-m: nqp::setelems(nqp::list,2**62) 16:40
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
lucasb :D 16:41
timotimo same thing, because it nulls out the slots
16:42 awwaiid left
AlexDaniel timotimo: just wanted to note that wrap of unsigned integers is actually defined, if I recall correctly 16:42
timotimo oh, it is?
arnsholt Oh, that's true, I think! 16:43
16:43 awwaiid joined
AlexDaniel I don't see how it is going to help in this case, but yeah 16:44
timotimo what do i include to get MAX_INT, limits.h?
apparently not 16:45
AlexDaniel isn't it SIZE_MAX ?
timotimo ah
right, i want the max of size_t anyway
lucasb stdint.h 16:47
for SIZE_MAX
funny, the error mesg changes, depending of the size specified 16:51
nqp-m: nqp::setelems(nqp::list,2**31)
camelia nqp-moarvm: OUTPUT«Memory allocation failed; could not allocate 17179869184 bytes␤»
lucasb nqp-m: nqp::setelems(nqp::list,2**64)
camelia nqp-moarvm: OUTPUT«MVMArray: Can't resize to negative elements␤ at <tmp>:1 (<ephemeral file>:<mainline>)␤ from gen/moar/stage2/NQPHLL.nqp:1428 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/NQPHLL.moarvm:eval)␤ from gen/moar/stage2/NQPHLL.nqp:1631 (/home/camelia/rakudo-m-in…»
lucasb nqp-m: nqp::setelems(nqp::list,2**62)
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
timotimo lucasb: i put a branch up on moarvm that addresses this issue, but it clearly has shortcomings 16:52
please feel free to look into it some more while i'm AFK 16:53
AlexDaniel: you're invited to take a look, too
AlexDaniel I'm already looking :)
timotimo thank you kindly
i think the check may want to either be repeated at the top or move to the top entirely because otherwise it'll say something about negative sizes
AlexDaniel timotimo: “Can't resize to a number bigger than 64bits” who said that it is 64bits? 16:58
is it actually so? 16:59
I mean, is it 64bits on 32-bit platforms?
17:02 awwaiid left 17:03 awwaiid joined
AlexDaniel timotimo: in fact in 2**64 case it complains about n being negative, isn't it already too late to attempt any fixes in set_size_internal ? 17:05
OK you will fix a segfault, but the problem of xx wrapping around will be there still 17:07
dalek c: b8cdb18 | (Tom Browder)++ | doc/Language/modules.pod6:
remove pod tag, shorten commen
17:08
timotimo AlexDaniel: right, that verbiage was put in before i thought to put the value we compare against into the exception string, too 17:12
but yeah, set_size_internal takes an MVMint64, and bind_pos does, too
but set_size - the instruction you get with setelems - takes a uint
clearly we'd prefer this to be uniform across the board. not sure how many pieces of the Everything will need changing 17:14
however ... are you really going to be asking for 2**63 slots anyway?
AlexDaniel that's stupid, but what if I do?
timotimo m: say (2 ** 63) / (1024 * 1024 * 1024 * 1024), " terabyte" 17:15
camelia rakudo-moar 2285d3: OUTPUT«8388608 terabyte␤»
timotimo then you shall get an exception
AlexDaniel m: 42 xx (2 ** 100) 17:16
camelia rakudo-moar 2285d3: OUTPUT«WARNINGS for <tmp>:␤Useless use of constant integer 42 in sink context (line 1)␤Cannot unbox 101 bit wide bigint into native integer␤ in block <unit> at <tmp> line 1␤␤»
AlexDaniel ah
there's an exception for that
timotimo yeah, it happens way earlier
AlexDaniel OK
timotimo the ops that we use to access arrays and other positional things "under the hood" all take 64 bit integers 17:17
(apparently a mix of signed and unsigned)
so it'll have to unbox your Int to an int
and boom
i mean ... we could also "if (ssize > 2 ** 48) exception('cowardly refusing to allocate an array with more than 2 ** 48 slots')" 17:19
m: say (2 ** 48) / (1024 * 1024 * 1024 * 1024), " terabyte"
camelia rakudo-moar 2285d3: OUTPUT«256 terabyte␤»
timotimo we don't likely have users with that much ram, do we? 17:20
AlexDaniel not yet
timotimo consider also that things like sorting aren't in-place
oh, multiply that with the size of your elements, too
so if you have a list of regular objects, that'll be a 64bit int for each slot 17:21
MasterDuke i use machines with 278Gb at work, and we're soon getting 512Gb machines
timotimo so 2048 terabyte just for a single of those arrays
MasterDuke and those are just regular dell servers
timotimo and our implementation requires all those slots in there to be nulled whenever we increase the size of such an array
AlexDaniel yeah, 256 Tb of RAM does not seem like some unimaginable amount nowadays
timotimo OK, so we go up to 56 17:22
m: say (2 ** 56) / (1024 * 1024 * 1024 * 1024), " terabyte"
camelia rakudo-moar 2285d3: OUTPUT«65536 terabyte␤»
timotimo month after month we can go and increase that
AlexDaniel xD
psch r: my @a; say @a[2**64] 17:23
camelia rakudo-moar 2285d3: OUTPUT«Cannot unbox 65 bit wide bigint into native integer␤ in block <unit> at <tmp> line 1␤␤»
..rakudo-jvm 2a1605: OUTPUT«(Any)␤»
psch except jvm limitations
well, we can shuffle somewhere
...assuming i got the gist of the discussion. it felt relevant enough :P
timotimo hmm 17:24
psch point being that array indices on jvm have to be native ints
MasterDuke timotimo: while you're messing around with bigints, github.com/MoarVM/MoarVM/pull/405
AlexDaniel MasterDuke: 278Gb is great. That probably means that you can have a year long bisectable uptime on that machine
psch so yeah, shuffling would be some kind of higher level abstraction for the underlying slots of Array
but that, on the other hand, again limits us for native typed arrays
MasterDuke AlexDaniel: :) -> :( 17:25
psch cause there we have to kinda sorta do C-style pointer arithmetic
i mean, clearly not as bad, but it's a thing
j: use nqp; nqp::setelems(nqp::list, 2**64) 17:26
camelia ( no output )
psch j: use nqp; say nqp::setelems(nqp::list, 2**64).elems
camelia rakudo-jvm 2a1605: OUTPUT«Method 'elems' not found for invocant of class 'BOOTArray'␤ in block <unit> at <tmp> line 1␤␤» 17:27
psch oh right
j: use nqp; say nqp::elems(nqp::setelems(nqp::list, 2**64))
camelia rakudo-jvm 2a1605: OUTPUT«0␤»
timotimo neat.
psch j: use nqp; my \l := nqp::list; say nqp::setelems(l, 2**64); say nqp::elems(l)
camelia rakudo-jvm 2a1605: OUTPUT«()␤0␤»
timotimo clearly they have some sort of sparse array implementation there?
17:27 awwaiid left
timotimo eh .. or it just silently fails? 17:27
psch i'd go with that, yeah
j: use nqp; my \l := nqp::list; say nqp::setelems(l, 2**64); nqp::bindpos(l, 2**64, 1); say nqp::elems(l) 17:28
camelia rakudo-jvm 2a1605: OUTPUT«()␤1␤»
psch hm, maybe not
AlexDaniel timotimo: here's a thing… set_elems receives 「MVMuint64 count」, then passes it to set_size_internal as 「MVMint64 n」. Why?
timotimo AlexDaniel: yes, why indeed.
psch AlexDaniel: that looks like an oversight, honestly
17:28 awwaiid joined
dalek c: ff008f5 | (Luca Ferrari)++ | doc/Language/exceptions.pod6:
Change a supposed sub title to head2
17:29
MasterDuke i found this a little confusing: MVMuint64 mp_get_int64
c: 006be40 | (Luca Ferrari)++ | doc/Language/objects.pod6:
Reword the private method section
c: 5359d4c | (Luca Ferrari)++ | doc/Language/objects.pod6:
Autopunning of a role creates a class and instantiate an object.
c: 45b3701 | (Tom Browder)++ | doc/Language/ (2 files):
Merge pull request #946 from fluca1978/master

A few improvements
17:29 wamba joined
psch j: use nqp; my \l := nqp::list; say nqp::setelems(l, 2**64); nqp::bindpos(l, $_, 1) for do $_ ** 10 for ^21; say nqp::elems(l) 17:30
MasterDuke and then later in the function: if (bits > 64) { MVM_exception_throw_adhoc(tc, "Cannot unbox %d bit wide bigint into native integer", bits); }
camelia rakudo-jvm 2a1605: OUTPUT«()␤java.lang.OutOfMemoryError: Java heap space␤ in block <unit> at <tmp> line 1␤␤»
psch isn't actually sure if that's a sensible thing to do..?
the point being, i'm only assigning 21 elements
AlexDaniel MasterDuke: where's that?
MasterDuke is that error message precisely correct on 32bit machines
?
MoarVM/src/6model/reprs/P6bigint.c 17:31
psch oh, i swapped the operand order for **
j: use nqp; my \l := nqp::list; say nqp::setelems(l, 2**64); nqp::bindpos(l, $_, 1) for do 10 ** $_ for ^21; say nqp::elems(l)
camelia rakudo-jvm 2a1605: OUTPUT«()␤java.lang.OutOfMemoryError: Java heap space␤ in block <unit> at <tmp> line 1␤␤»
timotimo MasterDuke: our native integers are always 64bit
psch ...i think
aaanyway, yeah, there's a different challenge for array sizes on jvm as well
timotimo hooray, it's never easy 17:32
psch i assume whatever moar will do will be somewhat portable
AlexDaniel MasterDuke: don't assume that something is correct with 32-bit rakudo. Just test it
arnsholt In Java checking for overflow is easy though!
psch but only if it does introduce another layer of abstraction
and, well, more abstraction on java clearly is a slow thing, so uhm
arnsholt You can just stuff it in a long and do it stupidly, since Java array indices are only ints =D
But yeah, native ints on JVM are long, not int
AlexDaniel MasterDuke: for a while I had 32-bit rakudo and found a bunch of bugs this way ;) 17:33
arnsholt And nums are double, not float
MasterDuke i don't currently have a 32bit machine
17:33 erdic left
AlexDaniel yeah… me too… 17:33
timotimo just fire up a qemu :)
psch m: use NativeCall; say nativesizeof(my int $ = 0)
camelia rakudo-moar 2285d3: OUTPUT«NativeCall op sizeof expected type with CPointer, CStruct, CArray, P6int or P6num representation, but got a P6opaque (Int)␤ in sub nativesizeof at /home/camelia/rakudo-m-inst-2/share/perl6/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) li…»
psch feh 17:34
m: my int $x = 0; use NativeCall; say nativesizeof($x)
camelia rakudo-moar 2285d3: OUTPUT«NativeCall op sizeof expected type with CPointer, CStruct, CArray, P6int or P6num representation, but got a P6opaque (Int)␤ in sub nativesizeof at /home/camelia/rakudo-m-inst-2/share/perl6/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) li…»
MasterDuke turns out i have a 32bit XP vm sitting around
17:34 flexibeast left
psch why is int suddenly P6opaque..? 17:34
j: my int $x = 0; use NativeCall; say nativesizeof($x)
camelia rakudo-jvm 2a1605: OUTPUT«␤(timeout)␤»
MasterDuke not sure i want to try and do anything useful in it though
psch ooh boy
i guess i really don't know enough about NC :P 17:35
AlexDaniel MasterDuke: there you go: github.com/perl6/whateverable/issues/43
18 open issues /o\
17:36 erdic joined
psch r: my int $x = 0; say $x.REPR 17:38
camelia rakudo-moar 2285d3, rakudo-jvm 2a1605: OUTPUT«P6opaque␤»
psch r: use nqp; my int \x = 0; use NativeCall; say nativesizeof(nqp::getattr(x, Int, '$!value')) 17:39
camelia rakudo-moar 2285d3: OUTPUT«Type check failed in binding; expected int but got Int (0)␤ in block <unit> at <tmp> line 1␤␤»
..rakudo-jvm 2a1605: OUTPUT«␤(timeout)␤»
psch walks away
timotimo o_O 17:43
AlexDaniel bisectable6: oh you poor soul…
dalek osystem: 235c98a | (Tom Browder)++ | META.list:
another try at a link to tar ball per irc with ugexe
17:50
17:51 bisectable6 joined 17:52 awwaiid left 17:53 awwaiid joined 17:54 bisectable6 left 17:55 bisectable6 joined 17:58 bisectable6 left, bisectable6 joined 17:59 bisectable6 left
lucs m: my $foo = 'FOO'; print q:s'\latexstuff{$fooBAR} # How to get 'FOOBAR', with scalar interpolation, but no closure ones (to avoid having to escape all the '{')? 18:00
camelia rakudo-moar 2285d3: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable '$fooBAR' is not declared␤at <tmp>:1␤------> 3my $foo = 'FOO'; print q:s'\latexstuff{7⏏5$fooBAR} # How to get 'FOOBAR', with sca␤»
psch m: say q{foo\qq[{"bar".succ}]} 18:01
camelia rakudo-moar 2285d3: OUTPUT«foobas␤»
psch lucs: ^^^ you can switch between q and qq inside any quoted string
m: say "foo \q[{ bar }]" # ther other way around
camelia rakudo-moar 2285d3: OUTPUT«foo { bar }␤»
psch s/ther/the/ 18:02
18:03 setty1 left
lucs Hmm... Interesting. 18:03
psch i *think* we also have a modifier for qq that only supresses closures
m: say qq:s[foo { 1 + 1 }] 18:04
camelia rakudo-moar 2285d3: OUTPUT«foo 2␤»
psch ...well, that's not it
m: say qq:S[foo { 1 + 1 }]
camelia rakudo-moar 2285d3: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unrecognized adverb: :S␤at <tmp>:1␤------> 3say qq:S7⏏5[foo { 1 + 1 }]␤»
psch yeah, no idea. i don't know if it's doc'd either
18:04 Actualeyes left 18:05 rgrinberg left
lucasb m: say qq:!c/oh { 2 + 2 }/ 18:06
camelia rakudo-moar 2285d3: OUTPUT«oh { 2 + 2 }␤»
18:07 Matt_ joined, Matt_ is now known as Guest23616 18:11 Guest23616 left
lucs m: my $foo = 'FOO'; print "\\latexstuff\{{$foo}BAR} ", q:s'\latexstuff{$foo\qq{}BAR}' # Both are LTA :( 18:13
camelia rakudo-moar 2285d3: OUTPUT«\latexstuff{FOOBAR} \latexstuff{FOOBAR}»
18:14 girafe joined
lucasb m: my $foo = 'FOO'; say q:s'\oh{$foo<>BAR}', q:s'\oh{$foo[]BAR}', q:s'\oh{$foo{}BAR}' 18:17
camelia rakudo-moar 2285d3: OUTPUT«\oh{FOOBAR}\oh{FOOBAR}\oh{FOOBAR}␤»
18:17 bazzaar left
gfldex m: sub latexstuff(|c){ '\latexstuff{' ~ c ~ '}' }; my $foo = 'FOO'; say latexstuff($foo ~ 'BAR'); 18:17
camelia rakudo-moar 2285d3: OUTPUT«\latexstuff{FOOBAR}␤»
psch oh my what
dalek ateverable: 8ec09c6 | (Aleks-Daniel Jakimenko-Aleksejev)++ | Bisectable.p6:
Bail out if there is something wrong

Not sure why this forgotten, but it is essential (in fact, it was working properly before the rewrite).
Tests needed.
psch so i ordered takeout 18:18
and it just arrived
but there was some kind of weird interaction between me using the doorbell receiver/speaker thing
and the delivery guy ringing the doorbell again
and now it wont stop ringing
i dismantled part of the speaker-thingy in our flat and it stopped, but if i reassemble it it starts again 18:19
lucs lucasb: That's pretty good. I don't understang how they work, but hey, there they are :)
psch i'm really unsure what to do
lucs lucasb: Thanks.
18:19 bisectable6 joined
gfldex m: my $foo = 'BAR'; say $foo<>; 18:20
camelia rakudo-moar 2285d3: OUTPUT«BAR␤»
gfldex lucs: see docs.perl6.org/language/subscripts#Zen_slices 18:21
lucs gfldex: Thanks
psch the lesson is clearly "don't order takeout"
i think
lucasb psch: what food did you order?
psch lucasb: a "Kebap Teller" with extra feta 18:22
18:22 pmurias joined
lucasb hmm, yummy 18:22
.botsnack
synopsebot6 om nom nom
yoleaux :D
gfldex you could get yourself one of those big cast iron castle-dracula-doornockers
psch right now i'm going with "it's gonna stop eventually" 18:23
which, honestly, seems really unlikely
cause the board and all looks lots digital so it's probably reach some weird racey edge case and is stuck
MasterDuke have you tried kinetic debugging? 18:24
psch well, i did rip off the speaker...
18:24 awwaiid left
MasterDuke threaten it with a hammer 18:24
psch i'm gonna eat first :S 18:25
18:25 awwaiid joined 18:28 dalek joined, ChanServ sets mode: +v dalek
AlexDaniel What's the first rakudo release that had support for moarvm? 18:36
psch yey, it fixed itself 18:37
the speaker/doorbell thingy
lucasb hmm, back in 2012?
psch afair the nqp refactor that made nqp-m work was instrumental in making nqp-j work 18:38
AlexDaniel 2013.11 ? github.com/rakudo/rakudo/commit/0a...0aa36f0d4b
psch the first moar relase was 2014.01, according to www.moarvm.org/releases.html
AlexDaniel ah, 2014.01 indeed 18:39
18:48 awwaiid left 18:50 awwaiid joined 18:51 domidumont left 18:55 woolfy left 19:05 awwaiid left 19:06 _slade_ joined, awwaiid joined
dalek ateverable: 2bf7d40 | (Aleks-Daniel Jakimenko-Aleksejev)++ | build.p6:
Stop attempting to build pre-moar tags

2014.01 is the first rakudo release with MoarVM support. Given that we cannot build parrot or anything else, let's just cut off older tags.
19:17
19:19 andrzejku_ left 19:20 emmmmm joined, emmmmm left 19:24 darutoko- left 19:25 jabits joined
lucasb m: role A::B::C[::T] {}; say A::B::C[Int].new.^shortname 19:27
camelia rakudo-moar 3ca0f8: OUTPUT«C[Int]␤»
lucasb m: role A::B::C[::T] {}; say A::B::C[Int].^shortname
camelia rakudo-moar 3ca0f8: OUTPUT«A::B::C[Int]␤»
lucasb oops, I meant to eval this in #perl6-dev 19:28
psch D:
lucasb MasterDuke++ for taking a look at it
psch MasterDuke++ indeed
lucasb but the shortname should be... short :) 19:29
19:29 awwaiid left
psch m: class A { class B { class C { } } }; say A::B::C.^shortname 19:29
camelia rakudo-moar 3ca0f8: OUTPUT«C␤»
psch hmm, yeah, that's a valid concern
19:30 awwaiid joined
dalek osystem: bc28e60 | (Tom Browder)++ | META.list:
another META6.json fix
19:32
19:33 kaare_ left 19:34 labster joined 19:41 DrBojingle joined 19:42 pierre_ joined
DrBojingle What kind of projects are you guys using Perl6 for? 19:42
psch the last not-backend thing i did was github.com/Perl6-Noise-Gang/p6-Music-Helpers 19:45
which is a library for generating musical cadences
it might have bitrotted a bit 'cause i didn't quite find the time to work on it in a few months 19:46
19:47 pierre_ left
masak DrBojingle: I'm implementing a language using Perl 6. (though it's slightly dogfooding, since the language is also exploring macro mechanisms, and the lessons are then meant to be used in Perl 6 itself.) 19:49
moritz is about to earn shitloads of money by giving a perl 6 training course 19:52
19:53 awwaiid left
lucasb moritz: will your material be available afterwards? :) 19:54
19:54 awwaiid joined
DrForr moritz: Heh, I finally got paid for my training course yesterday. 19:55
20:03 TEttinger joined 20:05 jabits left 20:06 HoloIRCUser2 joined, DrBojingle left 20:07 HoloIRCUser3 joined
masak was reminded by the above to keep pushing for putting out an abstract for a Perl 6 course on his employer's web site 20:09
20:10 HoloIRCUser2 left 20:11 mohae joined, HoloIRCUser3 left, HoloIRCUser1 joined 20:12 HoloIRCUser2 joined 20:13 mohae_ left 20:16 HoloIRCUser1 left
[ptc] moritz: where will you be giving it? 20:17
20:18 woolfy joined 20:20 woolfy left 20:24 awwaiid left 20:25 wongjtf99 joined, awwaiid joined
wongjtf99 ok, does anyone know of an up to date Perl 6 book/ebook that i can purchase? 20:26
gfldex wongjtf99: we don't got that yet, maybe in a few month 20:27
wongjtf99: see www.reddit.com/r/perl/comments/557..._6_books/) 20:28
20:33 labster left 20:37 smee joined
moritz lucasb: not clear yet 20:37
[ptc]: Berlin
20:37 smee left
moritz lucasb: it'll be a fairly small group (2-4 devs), so I won't have too much slides or so anyway, much will be interactive/dicussions/exercises 20:38
and maybe I'll do a code kata or two
timotimo cool 20:39
moritz nothing final yet, though 20:40
(oh, and it'll be all in German, so not very interesting for the broader audience) 20:42
lizmat moritz++ 20:44
:-)
moritz ... and I wonder if my next big project should be a book on Perl 6 20:45
20:45 bjz joined
moritz anybody else wondered if they should write a book on Perl 6, and just needed the right trigger? we could join forces :-) 20:46
DrForr I've been approached several times; I just don't know if I could do the subject justice. 20:47
moritz DrForr: that's your imposter syndrome talking 20:48
20:49 awwaiid left
DrForr I'm aware. 20:49
timotimo become a Subject Justice Warrior? :) :)
MasterDuke will the real DrForr please stand up?
20:49 awwaiid joined
moritz DrForr: I'd certainly be interested in a collaboration; I'll write up some thoughts and paste it in a gist 20:53
20:54 TEttinger left
DrForr Nod. 20:55
21:01 labster joined
AlexDaniel m: sub foo { once { say "HELLO! THIS IS PRINTED ONCE" }; foo if $++ < 5 }; foo 21:09
camelia rakudo-moar 3ca0f8: OUTPUT«HELLO! THIS IS PRINTED ONCE␤»
AlexDaniel m: sub foo { if True { once { say "HELLO! THIS IS PRINTED ONCE" } }; foo if $++ < 5 }; foo
camelia rakudo-moar 3ca0f8: OUTPUT«HELLO! THIS IS PRINTED ONCE␤HELLO! THIS IS PRINTED ONCE␤HELLO! THIS IS PRINTED ONCE␤HELLO! THIS IS PRINTED ONCE␤HELLO! THIS IS PRINTED ONCE␤HELLO! THIS IS PRINTED ONCE␤»
AlexDaniel ¯\_(ツ)_/¯ 21:10
21:10 Ven_ joined
gfldex is this a newbug? 21:10
21:11 cgfbee left
AlexDaniel gfldex: I have no idea 21:11
so once means maybe once 21:12
gfldex it does not. It's like a block that is guarded by a state variable 21:13
21:13 awwaiid left
gfldex i can see any RT for this. Please rakudobug. 21:13
21:14 awwaiid joined
gfldex m: sub f { { once { say 'oi‽' } } }; f; f 21:15
camelia rakudo-moar 3ca0f8: OUTPUT«oi‽␤oi‽␤»
gfldex AlexDaniel: ^^^ golfed
21:15 HoloIRCUser1 joined, HoloIRCUser2 left, HoloIRCUser2 joined
lizmat m: sub f { { { say "oi‽" } unless $++ } }; f; f # same issue / DIHWIDT 21:16
camelia rakudo-moar 3ca0f8: OUTPUT«oi‽␤oi‽␤»
21:17 xxdxdd joined
lizmat aka, the once is bound to its scope, not to the outer sub 21:17
and I think that is intentional 21:18
gfldex if it's intentional we need to doc that 21:19
21:19 HoloIRCUser1 left
AlexDaniel
.oO( and a good way to doc it is “do not use 「once」” )
21:20
really, I've been bitten by this thing too many times
21:20 HoloIRCUser1 joined
AlexDaniel you move some stuff around and BOOM! It no longer does what you mean 21:20
moritz DrForr, [ptc], everybody else: gist.github.com/moritz/29301316955...90e4ce9e7b 21:21
feedback would be very welcome
21:21 cgfbee joined, HoloIRCUser3 joined, HoloIRCUser2 left
MasterDuke i love the idea of once, but it seems really tricky to get it to do what everybody expects in every situation 21:21
jnthn Every issue you can create with `once` has an equivalent state var issue 21:22
It ties into the discussion in design.perl6.org/S04.html#When_is_..._a_closure
DrForr Are you planning to be at LPW, FOSDEM or OSCON? 21:23
(moritz)
moritz one of my favorite sections of the design docs :-)
DrForr: no plans yet, which likely means "no" :(
maybe YAPC::EU in Amsterdam, but that's like, 10 months away :/ 21:24
DrForr I know :/
jnthn In short, closure clones (by design) produce a fresh set of state vars 21:25
21:25 HoloIRCUser1 left
jnthn Which is what you want in, say, sub accumulater() { return { ++state $ } } or so 21:25
moritz anyway, I really need to get some sleep now
jnthn 'night, moritz
moritz will backlog of anybody hilights me; thoughts via other channels on that gist would be very welcome too 21:26
\o~
DrForr moritz: I like the look from a cursory glance, but I'm needing to get to bed as well.
o/'
moritz DrForr: sure, will talk tomorrow
21:29 eliasr joined 21:30 stevieb left 21:31 xxdxdd left
gfldex jnthn: does that mean the behaviour of once we got right now is by design? 21:33
21:36 awwaiid left
AlexDaniel “The semantics of INIT and once are not equivalent to each other in the case of cloned closures. An INIT only runs once for all copies of a cloned closure. A once runs separately for each clone, so separate clones can keep separate state variables:” 21:37
21:38 awwaiid joined
jnthn gfldex: Well, it means that if we want to consider, say, if blocks differently, we're going to have to introduce a mechanism for doing so 21:39
21:39 ShimmerFairy left
jnthn gfldex: And rules for when it applies 21:39
gfldex: And it'll get "interesting" fast, I suspect (consider which side of the sense a while loop should land on, for example) 21:40
(Especially when considering return lazy while ... style things which can be lazily evaluated.) 21:41
21:41 labster left
AlexDaniel well, it would be nice if 「once」 meant once always 21:42
jferrero m: say 4 == (1E12.log10 / 3).Int
camelia rakudo-moar 6977b8: OUTPUT«False␤»
lucasb in that reddit thread, the laurent_r user said he had written a book which was getting reviewed. does anybody knows him? I'd love to be a reviewer :) 21:43
21:43 pierre_ joined
DrForr He talked about it at YAPC, I think it was an LT on the last day. 21:45
21:45 firstdayonthejob joined
dalek osystem: e84bca2 | (Tom Browder)++ | META.list:
update to v0.1.2
21:46
lucasb DrForr: I'll search if it is on youtube. thanks!
DrForr Should be up.
21:48 pierre_ left 22:01 awwaiid left 22:02 labster joined 22:03 awwaiid joined, FROGGS left 22:04 FROGGS joined 22:05 BenGoldberg left
lucasb found it! www.youtube.com/watch?v=dV5TR8UC6vU 22:08
starts around 13 minutes
timotimo which part are we interested in here?
22:09 HoloIRCUser3 left, HoloIRCUser4 joined
lucasb I was just looking for this person, who said he had written a book about P6 22:09
timotimo ah
lizmat Laurent Rosenfeld's announcement of the "Think Perl 6" book
22:09 HoloIRCUser3 joined
lucasb based on the book how to think like a computer scientist 22:09
I read that book, the python version, a decade ago, I think. and I liked.
timotimo has a review copy of that book that asks for it not to be spread without asking the author first 22:10
lizmat "The goal of this book is to teach you to think like a computer scientist.:
but instead of using Python, it uses Perl 6
timotimo right
lizmat is proofreading 22:11
22:12 awwaiid left
timotimo it has many pages 22:12
lizmat 379 22:13
(so far)
22:13 HoloIRCUser4 left
dalek ateverable: 2702bd7 | MasterDuke17++ | Benchable.p6:
Error out before saying anything

Also use the correct pluralization when saying how many commits are being benchmarked.
Fixes #37
22:14
timotimo i have one with 277 here
lizmat good night, #perl6!
timotimo gnite lizmat 22:15
22:19 yqt left, yqt joined 22:20 BenGoldberg joined, HoloIRCUser3 left 22:22 awwaiid joined 22:32 adrusi_ is now known as adrusi 22:37 awwaiid left 22:39 awwaiid joined 22:44 canopus left 22:50 canopus joined 22:52 bjz left
tbrowder nite lizmat! 22:52
22:53 bjz joined 22:57 RabidGravy left 23:00 obfusk left, obfusk joined, ocbtec left 23:01 awwaiid left 23:02 awwaiid joined 23:03 bjz left 23:08 nukosuke joined, Ven_ left 23:12 nukosuke left 23:17 firstdayonthejob left 23:19 bjz joined 23:21 labster left 23:24 awwaiid left 23:25 awwaiid joined 23:35 grondilu left 23:42 girafe left 23:45 pierre_ joined 23:46 Zoffix joined
Zoffix How can I tell if I've got a native int? 23:46
m: my int $x = 2; say $x.^name
camelia rakudo-moar 6977b8: OUTPUT«Int␤»
23:46 rindolf left 23:48 awwaiid left 23:49 buggable joined, NeuralAnomaly joined, awwaiid joined, pierre_ left 23:50 labster joined
timotimo m: use nqp; my int $x = 4; my Int $y = 5; say nqp::objprimspec($x); say nqp::objprimspec($y); 23:52
camelia rakudo-moar 6977b8: OUTPUT«0␤0␤»
timotimo m: use nqp; my int $x = 4; my Int $y = 5; say nqp::objprimspec($x<>); say nqp::objprimspec($y<>);
camelia rakudo-moar 6977b8: OUTPUT«0␤0␤»
timotimo m: use nqp; my int $x = 4; my Int $y = 5; say nqp::objprimspec(nqp::decont($x)); say nqp::objprimspec($y<>);
camelia rakudo-moar 6977b8: OUTPUT«0␤0␤»
timotimo grmbl
AlexDaniel m: say ‘hello’; say ‘world’ 23:56
camelia rakudo-moar 6977b8: OUTPUT«hello␤world␤»
Zoffix m: use nqp; my int $x = 4; my Int $y = 5; say nqp::isint($x); say nqp::isint($y);
camelia rakudo-moar 6977b8: OUTPUT«0␤0␤»