»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_log/perl6 | UTF-8 is our friend! 🦋
Set by Zoffix on 25 July 2018.
cpan-p6 New module released to CPAN! FindBin (0.2.11) by 03LEMBARK 02:27
moritz good morning 05:11
recovered nqp, rakudo and star releases at perlgeek.de/static/p6/
I'll happily rsync them where people want them; just add the key at perlgeek.de/static/p6/id_rsa.pub to an authorized_keys file and tell me where to put the files 05:13
holyghost hi moritz 05:15
moritz hi holyghost 05:16
bartolin_ moritz++ 05:49
jmerelo releasable6: status 05:59
releasable6 jmerelo, Next release will happen when it's ready. 2 blockers. 132 out of 254 commits logged (⚠ 2 warnings)
jmerelo, Details: gist.github.com/b72bebf2724eec6017...531a8643a1
Geth doc: f4b1705cf1 | Altai-man++ | doc/Type/Pair.pod6
Note non-ASCII numerics in Pair colonpair
06:02
doc: 004925bf87 | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | doc/Type/Pair.pod6
Merge pull request #2727 from perl6/non-ascii-numerics-for-pair

Note non-ASCII numerics in Pair colonpair
doc: df53123211 | Altai-man++ | doc/Type/StrDistance.pod6
Document StrDistance.Str
06:03
doc: b160b4cf70 | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | doc/Type/StrDistance.pod6
Merge pull request #2728 from perl6/StrDistance-Str-method

Document StrDistance.Str
Geth doc: 5152acd274 | Altai-man++ | doc/Language/subscripts.pod6
Show multi-dim :exists adverb
06:05
doc: 9efb7ca582 | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | doc/Language/subscripts.pod6
Merge pull request #2730 from perl6/multi-dim-exists-adverb

Show multi-dim :exists adverb
doc: 68872b27f2 | Altai-man++ | doc/Language/list.pod6
Show typed array of syntax
06:07
doc: f75b09f0e4 | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | doc/Language/list.pod6
Merge pull request #2732 from perl6/array-of-syntax

Show typed array of syntax
Geth doc: 263ba422c9 | Altai-man++ | doc/Language/control.pod6
Add next in whenever example
06:09
doc: 3e3ee41f48 | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | doc/Language/control.pod6
Merge pull request #2733 from perl6/next-in-whenever

Add next in whenever example
jmerelo squashable6: status 06:12
squashable6 jmerelo, ⚠🍕 Next SQUASHathon in 3 days and ≈5 hours (2019-05-04 UTC-14⌁UTC+12). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
jmerelo And this weekend... Documentation squashathon! Help new generations of perl6ers learn the language! 06:13
xinming m: "Test".say; 08:50
evalable6 Test
xinming m: [lcm](8, 24, 17).say; 09:18
evalable6 408
xinming m: my @a = (8, 24, 17); ([lcm] @a).say;
evalable6 408
xinming m: my @a = (8, 24, 17); ([lcm]@a).say;
evalable6 (exit code 1) 04===SORRY!04=== Error while compiling /tmp/w0sexw6Y4g
Two ter…
xinming, Full output: gist.github.com/d97a223cb1656d7983...4edeade5b7
xinming So, anyone here would clarify this for me? Why [lcm] @a <--- Here we need space.
While [lcm](8, 24, 17) <--- Here, We shouldn't have space. 09:19
m: [lcm] (8, 24, 17).say;
evalable6 Potential difficulties:
Useless use of [lcm] in sink context
at /tmp/u__99cQbgD:1
------> 03<BOL>08⏏04[lcm] (8, 24, 17).say;
(8 24 17)
xinming m: ([lcm] (8, 24, 17)).say;
evalable6 408
xinming hmm, strange. :-)
Ignore me, My example is wrong. 09:20
jmerelo xinming: probably if you look at the grammar, hyper-operators will need the whitespace before a variable. Or the other say round, sigils need whitespace
Geth doc/hash-array-subclass-init: 9a8d11323f | Altai-man++ | doc/Language/syntax.pod6
Split example and fix thinko
09:24
doc/dynamically-created-enum-example: 19f911e848 | Altai-man++ | doc/Language/typesystem.pod6
Split example
09:34
Geth doc/master: 5 commits pushed by (JJ Merelo)++ 09:51
doc: ed8aed5e72 | Altai-man++ | doc/Language/syntax.pod6
Show a non-coercing hash/array subclass init
doc: 9a8d11323f | Altai-man++ | doc/Language/syntax.pod6
Split example and fix thinko
doc: cb4347333b | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | doc/Language/syntax.pod6
Merge pull request #2726 from perl6/hash-array-subclass-init

Show a non-coercing hash/array subclass init
Geth doc: 54c18ded0d | Altai-man++ | doc/Language/typesystem.pod6
Add example of dynamically created enum
10:04
doc: 19f911e848 | Altai-man++ | doc/Language/typesystem.pod6
Split example
doc: 233450dada | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | doc/Language/typesystem.pod6
Merge pull request #2731 from perl6/dynamically-created-enum-example

Add example of dynamically created enum
rba moritz: can you please rsync your perlgeek.de/static/p6/ to [email@hidden.address] to make them available for download at files.p6c.dev/ -- to have it redundant 11:30
jmerelo Not chosen for Season of Docs :-( 12:05
kawaii Can I have a method, which accepts an optional `$level` parameter which can either be an Int or a range? i.e. `method generate-level($level) {}` where `$level` is either `8` or `5..30`. And if not provided fall back to `$level = (2..100).pick`? 12:09
sena_kun kawaii, you don't want to leave the type open? 12:10
xq it does sound like a list of numbers, with a coercion from a single number, and a default 12:11
kawaii So I'm creating a method as part of a generator class. My idea is that if you call the `generate-level` method without any params it will simply fall back to using `(2..100).pick`, but should also accept either a single number or range as arguments. 12:12
Providing a single number will just return that number, returning a range will pick from it.
sena_kun m: subset IntOrRange where Int|Range; sub a(IntOrRange $level = (2..100).pick) { say $level }; say a; say a; say a(25); say a(0..2); 12:13
evalable6 41
True
29
True
25
True
0..2
True
hahainternet prly wanna move that .pick into the sub body i guess
although that doesn't work in the int case i guess
multi it? ;)
sena_kun or `sub a($level where Int|Range = (2..100).pick) { say $level }` 12:14
timotimo m: say 5.pick
evalable6 5
sena_kun and then you can `given $level { when Int ... when Range ... }`
timotimo m: say 5.pick for 100_000 12:14
evalable6 5
timotimo m: say 5.pick for ^100_000
evalable6 5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
timotimo, Full output: gist.github.com/62caec604cfa844417...993920b47f
kawaii sena_kun++
hahainternet timotimo: showoff ;)
patrickb jmerelo: Did they give a reason? 12:25
Xliff subset IntOrRange where Int|Range; sub a(IntOrRange $level = (2..100).pick) { say $level.pick if $level ~~ Range; say $level }; a; a; a(25); a(0..2); 12:35
evalable6 46
45
25
2
0..2
12:36
Xliff subset IntOrRange where Int|Range; sub a(IntOrRange $level = (2..100).pick) { given $level { when Range { say .pick }; default { .say }; }; }; a; a; a(25); a(0..2); 12:37
evalable6 95
91
25
1
Xliff subset IntOrRange where Int|Range; sub a(IntOrRange $level = (2..100).pick) { given $level { when Range { say .pick }; default { .say }; }; }; a; a; a(25); a(0..2);
evalable6 49
33
25
0
Xliff m: multi sub a (Range $a) { say $a.pick }; multi sub a (Int $a) { say $a; }; multi sub a { (2..100).pick.say }; a; a; a(25); a(0..2) 12:39
evalable6 39
79
25
1
Xliff m: multi sub a (Range $a) { say $a.pick }; multi sub a (Int $a) { say $a; }; multi sub a { a(2..100) }; a; a; a(25); a(0..2) 12:41
evalable6 83
23
25
2
sss p6: say 3; 14:18
evalable6 3
Xliff /o\ Cannot modify an immutable Num (0)? ??? 14:52
timotimo you have a variable without a scalar container somewhere 14:53
Xliff m: multi sub a { my ($x, $y) = 0 xx 2; samewith($x, $y) }; multi sub a (Num() $x is rw, Num() $y is rw) { ($x, $y) = (1/2, 1/3).map( *.Num ) }; say a 14:54
evalable6 (exit code 1) Cannot modify an immutable Num (0)
in sub a at /tmp/cQwgyLLnPh line 1
in sub a at /tmp/cQwgyLLnPh line 1
in block <unit> at /tmp/cQwgyLLnPh line 1
Xliff wtf?
Xliff m: multi sub a { my ($x, $y) = 0.1 xx 2; samewith($x, $y) }; multi sub a (Num() $x is rw, Num() $y is rw) { ($x, $y) = (1/2, 1/3).map( *.Num ) }; say a 14:54
evalable6 (exit code 1) Cannot modify an immutable Num (0.1)
in sub a at /tmp/UfNTaU2hmU line 1
in sub a at /tmp/UfNTaU2hmU line 1
in block <unit> at /tmp/UfNTaU2hmU line 1
Xliff m: multi sub a { my ($x, $y) = (0, 0); samewith($x, $y) }; multi sub a (Num() $x is rw, Num() $y is rw) { ($x, $y) = (1/2, 1/3).map( *.Num ) }; say a
evalable6 (exit code 1) Cannot modify an immutable Num (0)
in sub a at /tmp/Xdno2qBESn line 1
in sub a at /tmp/Xdno2qBESn line 1
in block <unit> at /tmp/Xdno2qBESn line 1
Xliff m: multi sub a { my ($x, $y) = (0, 0); samewith($x, $y) }; multi sub a ($x is rw, $y is rw) { ($x, $y) = (1/2, 1/3).map( *.Num ) }; say a 14:55
evalable6 (0.5 0.3333333333333333)
jnthn Does a coercion type on a `is rw` even make sense, I wonder?
Xliff m: multi sub a { my ($x, $y) = (0, 0); samewith($x, $y) }; multi sub a (Num $x is rw, Num $y is rw) { ($x, $y) = (1/2, 1/3).map( *.Num ) }; say a
evalable6 (exit code 1) Cannot resolve caller a(Int:D, Int:D); none of these signatures match:
()
(Num $x is rw, Num $y is rw)
in sub a at /tmp/QTnE1k0W6x line 1
in block <unit> at /tmp/QTnE1k0W6x line 1
jnthn The result of the coercion is not going to be related to the original container
Xliff In this case, I agree. 14:56
Correction: In certain cases, I agree.
But for in/out?
m: multi sub a { my ($x, $y) = (1, 1); samewith($x, $y) }; multi sub a (Num $x is rw, Num $y is rw) { ($x, $y) »+« (1/2, 1/3).map( *.Num ) }; say a
evalable6 (exit code 1) Cannot resolve caller a(Int:D, Int:D); none of these signatures match:
()
(Num $x is rw, Num $y is rw)
in sub a at /tmp/QEoewFoWCX line 1
in block <unit> at /tmp/QEoewFoWCX line 1
Xliff m: multi sub a { my ($x, $y) = (1, 1); samewith($x, $y) }; multi sub a (Num() $x is rw, Num() $y is rw) { ($x, $y) »+« (1/2, 1/3).map( *.Num ) }; say a 14:57
evalable6 (1.5 1.3333333333333333)
Xliff m: multi sub a { my ($x, $y) = (1, 1); samewith($x, $y) }; multi sub a (Num() $x is rw, Num() $y is rw) { ($x, $y) = (1/2, 1/3).map( *.Num ) }; say a
evalable6 (exit code 1) Cannot modify an immutable Num (1)
in sub a at /tmp/N2Uyz2Y1bn line 1
in sub a at /tmp/N2Uyz2Y1bn line 1
in block <unit> at /tmp/N2Uyz2Y1bn line 1
Xliff So I can modify if I use the value, but not if I just want to assign?
The type coercion is irrelevant. 14:58
jnthn: So to answer your question: it doesn't NOT make sense. 14:59
jnthn m: multi sub a { my ($x, $y) = (1e0, 1e0); samewith($x, $y) }; multi sub a (Num() $x is rw, Num() $y is rw) { ($x, $y) = (1/2, 1/3).map( *.Num ) }; say a 15:00
Xliff m: multi sub a { my ($x, $y) = (1, 1); samewith($x, $y) }; multi sub a (Num() $x is rw, Num() $y is rw) { ($x, $y) = (1/2, 1/3).map( *.Num ) }; say a
evalable6 (0.5 0.3333333333333333)
(exit code 1) Cannot modify an immutable Num (1)
in sub a at /tmp/QqOVtjs62h line 1
in sub a at /tmp/QqOVtjs62h line 1
in block <unit> at /tmp/QqOVtjs62h line 1
jnthn Looks pretty relevant to me; if it doesn't have to coerce, then it's just binding the incoming rw container
Xliff m: multi sub a { my ($x, $y) = (0e0, 0e0); samewith($x, $y) }; multi sub a (Num() $x is rw, Num() $y is rw) { ($x, $y) = (1/2, 1/3).map( *.Num ) }; say a
evalable6 (0.5 0.3333333333333333)
Xliff m: multi sub a { my ($x, $y) = (1, 1); samewith($x, $y) }; multi sub a (Num() $x is rw, Num() $y is rw) { ($x, $y) = (1/2, 1/3).map( *.Num ) }; say a
evalable6 (exit code 1) Cannot modify an immutable Num (1)
in sub a at /tmp/3q3VbGFofx line 1
in sub a at /tmp/3q3VbGFofx line 1
in block <unit> at /tmp/3q3VbGFofx line 1
Xliff m: multi sub a { my ($x, $y) = (1, 1); samewith($x, $y) }; multi sub a (Num() $x is rw, Num() $y is rw) { $x++; $y++; ($x, $y) = (1/2, 1/3).map( *.Num ) }; say a 15:01
evalable6 (exit code 1) Cannot resolve caller postfix:<++>(Num:D); the following candidates
match th…
Xliff, Full output: gist.github.com/c88418e3c7af3e940a...f4e4958671
Xliff m: multi sub a { my ($x, $y) = (1, 1); samewith($x, $y) }; multi sub a (Num() $x is rw, Num() $y is rw) { $x+=1; $y+=1; ($x, $y) = (1/2, 1/3).map( *.Num ) }; say a
evalable6 (exit code 1) Cannot assign to an immutable value
in sub a at /tmp/e6aXBwplo_ line 1
in sub a at /tmp/e6aXBwplo_ line 1
in block <unit> at /tmp/e6aXBwplo_ line 1
Xliff Weird.
m: multi sub a { my ($x, $y) = (1, 1); samewith($x, $y) }; multi sub a (Num() $x is rw, Num() $y is rw) { ($x, $y) »+« (1/2, 1/3).map( *.Num ) }; say a
evalable6 (1.5 1.3333333333333333)
Xliff ^^ So why does that work with the coercion in place? 15:02
jnthn Becuase it's not doing an assignment?
Xliff It isn't?
jnthn »+« doesn't mutate anything, it just returns a list
Xliff m: multi sub a { my ($x, $y) = (1, 1); samewith($x, $y) }; multi sub a (Num() $x is rw, Num() $y is rw) { ($x, $y) »+=« (1/2, 1/3).map( *.Num ) }; say a
evalable6 (exit code 1) Cannot modify an immutable Num (1)
in sub a at /tmp/zj8luigCoe line 1
in sub a at /tmp/zj8luigCoe line 1
in block <unit> at /tmp/zj8luigCoe line 1
Xliff Oh, frell.
OK. So type coercion and "is rw" do not mix? 15:03
Because I'm kinda using it everywhere in GTK
jnthn Pretty much. I don't know what we should do there really.
Xliff I need that where I want to make sure that in/out computations use the same type.
And then return the proper value.
jnthn I mean, it's either a "you can't do that" error, or we specify that if it has to coerce then it will immediately assign the coerced value back into the source container 15:04
Xliff This way I don't have to force end users to know the required type of a routine. They can just use a(1, 2) rather than a(1.Num, 2.Num)
jnthn: The latter is what I assumed would be the case.
jnthn That'd mean in `sub to-num(Num() $x) { }; my $x = 42; to-num($x); say $x.WHAT` would be `Num`. 15:05
Xliff You mean: `sub to-num(Num() $x is rw) { }'? 15:06
Xliff I see your point. 15:06
b2gills If (1, 2) are valid inputs it can't be "is rw"
jnthn oops, yes
Doing too many things at once :)
Xliff b2gills: ?
b2gills It would have to be (( my $ = 1), (my $ = 2)) 15:07
because those are rw
jnthn Well, yes, tht also
*that
Xliff b2gills: Oh. Yes. Containers are implied.
b2gills it might make a bit more sense to combine a coercion with "is raw", but then you can't assume it is writable 15:08
b2gills m: sub to-num(Num() $x is rw) { }; my Int $x = 42; to-num($x) 15:09
evalable6
Xliff OK. If it is going to be an error, it would be nice to detect it given "sub a (Num() $x is rw)" rather than waiting until I need to return the value and then saying it's immutable. 15:10
b2gills m: sub to-num(Num() $x is rw) { }; my Int $x = 42; to-num($x); say $x.perl
evalable6 42
jnthn Xliff: Yeah, I totally agree the current situation is bad. Just not sure whether to lean to error or DWIM (with the usual potential WAT :)) 15:11
Xliff m: sub to-num-plus-half(Num() $x is rw) { $x += 0.5 }; my Int $x = 42; to-num-plus-half($x); say $x.perl
evalable6 (exit code 1) Cannot assign to an immutable value
in sub to-num-plus-half at /tmp/zaZnoWn403 line 1
in block <unit> at /tmp/zaZnoWn403 line 1
Xliff jnthn: Well. This means I may have to rewrite a LOT of code. Let me check my exposure.
78 uses in just GtkPlus, so I'd say pretty significant. 15:13
kawaii Is the Perl 6 Deep Dive book a worthy purchase?
(in 2019, it was released in 2017 - and this language moves _fast_) 15:14
b2gills If you are dealing with NativeCall routines, I might take that further and wrap them. `sub foo ( Num() $x ){ use NativeCall; sub foo ( num is rw ) is native {}; my num $i-o = $x; foo($i-o); return $i-o } 15:16
Xliff jnthn: OK. How about this. If the is rw container is NOT typed, then DWIM. If it IS typed and that type does not match the coerced type, then throw an error.
So this would be fine: sub to-num(Num() $x) { }; my $x = 42; to-num($x); 15:17
But this would NOT be: sub to-num(Num() $x) { }; my Int $x = 42; to-num($x); say $x.WHAT` would be `Num`
Errr... corrected version
But this would NOT be: sub to-num(Num() $x) { }; my Int $x = 42; to-num($x);
b2gills kawaii: I would say that anything it talks about is probably still accurate. I have a copy on my computer that I haven't read yet, so if you really want to know for sure that it is still accurate I could give it a quick look. 15:20
kawaii b2gills: that'd be great - just let me know if it all seems relevant enough :) 15:22
b2gills I'm sure it's fine, but ok.
kawaii I'm trying to learn more about software architecture (OOP in Perl 6) as opposed to the language itself
jnthn Xliff: If we do the coerce/assign approach, then that error would fall naturally out of the type check 15:33
Xliff jnthn: Even with the coercion aspect? 15:34
jnthn: I'm fine with that.
jnthn: Let me know which approach you go with, if you would! :) 15:35
jnthn Xliff: Created github.com/perl6/problem-solving/issues/21 to track it 15:59
El_Che are the sources still down at the original location? 16:05
source == releases
cpan-p6 New module released to CPAN! Test::Script::Output (0.0.4) by 03JMERELO 16:37
discord6 <Vendethiel> This reminds me of C++ const& casting... where only msvc allows to bind a temporary to a non const 17:09
masak kawaii: have you read S12? (I know I'm an outlier for recommending it, but I've always liked the synopses, so...) 17:50
moritz there are lots of resources on OO design, though not related to Perl 6. 17:59
masak I recently read up on Dylan's OO (which is inspired by CLOS and Smalltalk) and I really liked it 18:00
timotimo RabidGravy tweeted a bunch about working on design patterns with perl6 code
moritz for example Patterns of Enterprise Application Architecture, Fowler 18:01
I also found Enterprise Integration Architecture useful
Building Evolutionary Architectures by Ford and Parsons
moritz there are also several books on the architecture of open source projects, which I found quite interesting to read 18:31
lizmat PSA: this week's Perl 6 Weekly will be skipped, /me is too exhausted 18:33
yoleaux 27 Apr 2019 18:35Z <jnthn> lizmat: cuid is a unique ID within the compilation unit, which can be identified with the filename; mostly it's useful if the log has multiple routines of the same name from the same file in it
27 Apr 2019 18:37Z <jnthn> lizmat: to be clear, it's an ID for a Frame (which might be a routine, or block, or thunk)
29 Apr 2019 20:17Z <sena_kun> lizmat: hi! I am looking for some clues to document things... 6.d changelog has the "Parameter.perl includes introspectable defaults" entry. From github.com/rakudo/rakudo/commits/m...ameter.pm6 I see your commits with some `.perl` mentions... Can you by chance explain the thing so it could be documented? It will be very appreciated.
29 Apr 2019 20:35Z <sena_kun> lizmat: and hi again! Now the question is about "Default Hash.of returns a Str(Any) coercer type object". I see github.com/perl6/roast/commit/34ce...bae08c6e26 but it clearly tests `keyof` method. `Hash.new.of` returns me Mu, definetely not Str(Any). What is wrong with me^W^W here?
raschipi Is already too exausted and yoleaux dumps a load on you. 18:35
sena_kun : ( 18:36
surely can be delayed...
lizmat, take care!
jmerelo lizmat: take care :-) 18:48
b2gills .tell kawaii Perl 6 Deep Dive is still just as accurate as it was when it was first released. I would recommend it for new and intermediate Perl6 programmers. (I could only get to chapter 8 before it got too boring for me to continue, because I already have a better grasp of the language than the book will give you.) 19:25
yoleaux b2gills: I'll pass your message to kawaii.
ufobat__ woudn't it make sense to have an option in %*SUB-MAIN-OPTS to allow the absence of = for positional parameters? like sub MAIN(:$e) -> programm.pl6 -e "foobar" instead of -e="foobar" 20:03
skids The "is rw" coercion problem reminded me of an old gist I worte up, now quite dated, but perhaps worth meditating on: gist.github.com/skids/aabd2aad3d0b5ad8481b 20:15
guifa skids: I didn’t realize the spec said it should use new(Foo:D) for coercions. I literally just made a problem solving post saying we should probably standardize a FROM(Foo:D) method for allowing classes to define their own from-that-to-me coercions. 20:25
skids I think the method-in-class thing turned out to be unworkable for some internal reason which is why we have those subs now. 20:26
I don't remember... it's been a while since I dealt with ceorcion.
Or... it used to be we defined some infix:<...> method now that I think of it. 20:30
Oh right... postcricumfix<( )>
guifa So it was like “this-string-can-become-a-foo”.(Foo) ? 20:32
skids Well yes except injecting new methods into Str was and still is tacky. 20:33
Oh, no, sorry, it was more like MyClass("this str is ceorced to MyClass") 20:34
...would call MyClass.postcircumfix:<( )> with the string as arguments, and multi-dispatch. 20:35
skids can't spell coercion today. 20:36
.oO(making coercive type so first-class that they have their own package which must exist to coerce... gah! the combinatorics of it!)
20:49
Woodi skids: perl6-xcb on github is your work ? had problems with generating bindings. I have xcb repo. or proto... 20:53
skids Yeah, that insanity is my folly :-) 20:54
Woodi is this module working for you or bitrotted ?
skids Hasn't been touched in so long something probably broke. Did the script die, or did the bindings just blow up?
Woodi some strange errors, need to recheck 20:55
but question: from what sources you was generating bindings ? xcb sources or distro code ? 20:56
skids I had to do some really shameful things to get CStruct to behave itself. Likely CStruct has gotten some love in the interim.
I was using debian package and I think a more recent copy as well. 20:57
Lemme look
10.0.0.alpha is the tag I have in the leftover built bindings in my working directory. 21:01
...which would have been the head of the xcb repo circa Jun 2 2017 21:04
Woodi cannot find debian repo with xml files. will try xcb repo 21:11
skids Hrm though that makes no sense since it looks like there was at least a 1.12.0 when I wrote that... so I must have been working with the 1.10 deb last time.
It's debian package xcb-proto I think. 21:13
...which is now 1.12 but I think used to be 1.10
Yeah on my still rather old rakudo it blows up with "internal problem: parser did not give circumfix an EXPR" when building the bindings. 21:18
Woodi problems with ecosystem here, zef could detect problems faster. I thinked we have new p6c.org... 21:22
skids Oh, I never published that module because it never was ready for it. 21:25
Woodi nah, I need XML module first :) 21:27
skids: problems with generating: Expected align mod 1, got NaN for client_started 21:28
and No such method 'elements' for invocant of type 'Any' 21:29
Woodi skids: I got C example of xcb and it looks like ready-to-use metro style GUI. or QML. so modern :> with this one module we could do nice UI :) 21:31
skids Something probably bitrotted in one of the NC* routines then. 21:33
skids I can get past my EXPR error by commenting some stuff out in MakeReplies and see similar errors. 21:34
I should build a newer rakudo though.
Anyhow, I need to drive home. 21:49
xinming m: my @a = do for <a> .. <z> { %($_ => $_) }; my (%h1, %h2, @x, %h-last) := @a[0, 1, (3 .. 5), * - 1]; [%h1, %h2, @x, %h-last].perl.say; 22:06
evalable6 [{:a("a")}, {:b("b")}, (${:d("d")}, ${:e("e")}, ${:f("f")}), {:z("z")}]
xinming I never thought that perl6 will work for this example, but it actually works, and Do what I mean. :-)
people can implement perl6 grammar parser is really kinda miracle in software engineering 22:07