»ö« 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.
Geth doc: cdabde82a5 | cfa++ | doc/Language/pod.pod6
an → a (#2604)
01:44
synopsebot Link: doc.perl6.org/language/pod
cpan-p6 New module released to CPAN! SDL2-Raw (0.3) by 03TIMOTIMO 01:45
leont Another day, another rakudobug 02:19
vrurg is finally got enough bravery to try fixing one of them... 02:27
cpan-p6 New module released to CPAN! Path-Finder (0.2.0) by 03LEONT 02:46
Geth doc: 9787750528 | (JJ Merelo)++ | 3 files
Clarifications and reflow
07:01
doc: ab39e38999 | (JJ Merelo)++ | 3 files
More clarifications, reindentations and reflow
mercury^ Hi. Is there a rationale somewhere for types being undefined values of themselves, instead of defined values of Type? This seems to have changed between the relevant Apocalypse and the later spec for the object model. I ask because the initial plan seems more intuitive to me. 09:28
jnthn: you are a maintainer of MoarVM, is that right? I noticed that some scripts download the Unicode data via ftp and do no verification. The data is available via HTTPS also. 09:31
moritz mercury^: "defined" is (usually) the distinction between being a type object and an instance 09:51
mercury^ moritz: but why was this design chosen? 09:52
moritz mercury^: so that a type conforms to itself 09:57
I'm not too deep into the semi-circular approach to MOPs though, I guess jnthn++ or TimToady++ could explain it better 09:58
mercury^ p6: sub f(Any:U $t, $x) returns Array[$t] { return $x; }; f(Int, Array[Int](4)) 09:59
camelia Type check failed for return value; expected Array[Mu] but got Array[Int] (Array[Int].new(4))
in sub f at <tmp> line 1
in block <unit> at <tmp> line 1
mercury^ Why does that fail?
moritz dunno 10:15
m: sub f(Any:U ::T, $x --> Array[T]) { $x }; f Array[Int].new()
camelia Too few positionals passed; expected 2 arguments but got 1
in sub f at <tmp> line 1
in block <unit> at <tmp> line 1
moritz m: sub f(Any:U ::T, $x --> Array[T]) { $x }; f Int, Array[Int].new()
camelia Type check failed for return value; expected Array[T] but got Array[Int] (Array[Int].new())
in sub f at <tmp> line 1
in block <unit> at <tmp> line 1
dakkar oh, type captures are weird 10:57
m: sub f(::T $x, T $y) { $x+$y }; f(1,2); f(1.Int,2.Num)
camelia Type check failed in binding to parameter '$y'; expected Int but got Num (2e0)
in sub f at <tmp> line 1
in block <unit> at <tmp> line 1
dakkar m: sub f(::T $x, T $y) { $x+$y }; f(1,2); f(1.Int,2.Int)
camelia ( no output )
dakkar this is as I'd expect 10:58
but…
m: sub f(::T $x, T $y --> T) { $x+$y }; f(1.Num,2.Num)
camelia Died with X::TypeCheck::Return
in sub f at <tmp> line 1
in block <unit> at <tmp> line 1
dakkar ???
evalable6 Stub code executed
in block <unit> at /tmp/wcYMIFUXl_ line 1
dakkar also: 10:59
m: sub f(::T $x, Array[T] $y) { $y.push($x) }; f(1.Int,Array[Int].new())
camelia Type check failed in binding to parameter '$y'; expected Array[T] but got Array[Int] (Array[Int].new())
in sub f at <tmp> line 1
in block <unit> at <tmp> line 1
dakkar is this the expected behaviour?
mercury^ I need to go. If anyone can answer my questions, please feel free to. I will check the logs for answers later. 11:31
AlexDaniel .tell samcv colabti.org/irclogger/irclogger_lo...02-04#l153 11:37
yoleaux AlexDaniel: I'll pass your message to samcv.
tobs m: say Array[Int] ~~ Array[Int] 12:43
camelia True
tobs m: say Array[Int] ~~ -> $t { Array[$t] }.(Int) 12:44
camelia True
sena_kun m: class A { has Positional["Failure oh-huh"] $.a }; A.new(a => Array[Str].new('a', 'b')); 13:02
camelia Type check failed in assignment to $!a; expected Positional[Str] but got Array[Str] (Array[Str].new("a", "b"))
in block <unit> at <tmp> line 1
sena_kun beware of this ^
notagoodidea timotimo: thx for answering on SO (had to go yesterday and forget to say that I will check the log). As I understand the grapheme definition is implicit in grammar ? Do you know if someone is working on implementing :bytes modifiers and so on or on making the grapheme definition explicit? 13:20
moritz graphemes are defined at the string level, not the grammar level 13:56
ufobat_ how much work would it be to make regexes/grammars work on Blobs? 14:24
how hard could it be.... :p
hahainternet i thought they did tbqh 14:33
oh, blobs, not bufs
hmm
MasterDuke theres' been a lot of interest in using grammars/regexes for binary data recently 14:45
ufobat_ MasterDuke, is there something I could read about that? 14:47
MasterDuke ufobat_: about the questions people have had recently? if so, i'd just search the logs of this chanel ( colabti.org/irclogger//irclogger_l...arch/perl6 ) for "binary" or something like that 15:01
otherwise the synopses (i don't know which one) may have something about what was originally proposed 15:02
MasterDuke also, i think the nqp binary reading/writing ops that jnthn recently specced and nine implemented were a prerequisite for anything further 15:08
ufobat_ ahh :) cool, thanks MasterDuke 15:18
Geth doc: titsuki++ created pull request #2606:
Update README.jp
16:00
doc: 87d343bf58 | titsuki++ | resources/i18n/jp/README.jp.md
Update README.jp
doc: eff189e02c | (Itsuki Toyota)++ (committed using GitHub Web editor) | resources/i18n/jp/README.jp.md
Merge pull request #2606 from titsuki/fix-readme-jp

Update README.jp
doc: 60511c1c58 | (Itsuki Toyota)++ (committed using GitHub Web editor) | resources/i18n/jp/README.jp.md
Fix typo
16:01
notagoodidea_ hahainternet: Juste catching conversation, what is the difference between Blob and Buf ? 16:14
ufobat_: It was in Synopse 05 that I found the part about grammars and parsing binary data 16:15
timotimo blob is read-only, buf is read-write 16:30
wowza 16:33
brendan eich just tweeted "Perl 6 is awesome."
timotimo potentially sarcastically/ironically, but still 16:33
cpan-p6_ New module released to CPAN! Device-Velleman-K8055 (0.0.3) by 03JSTOWE 16:34
Kaiepi forgot to mention it here but i received the prize for my contributions in the last squashathon 16:39
jmerelo Kaiepi: great! 16:40
leont Yeah I read it ironically 17:13
Runnng into a weird issue where mi6's tests fail because it can't load JSON::Pretty. 17:22
Otherwise mi6 works fine and I do have JSON::Pretty installed
jmerelo leont: I have asked for clarification. Apparently, it's not a good thing to use Mu as part of the hierarchy. 17:29
leont Anyone have a clue what version of rakudo runs on travis? 17:53
sena_kun isn't it configurable? or you mean `latest`? 17:54
leont I found it, it was hidden in de travis output. 2018.10 it seems. 17:56
Geth perl6-most-wanted: f17db07d15 | (David Warring)++ (committed using GitHub Web editor) | most-wanted/bindings.md
Note second attempt at libxml2 bindings
18:11
Geth doc: 1abf593a1d | (JJ Merelo)++ | doc/Type/Mu.pod6
Adds examples and minor improvements
18:16
synopsebot Link: doc.perl6.org/type/Mu
doc: 7fbd0a9001 | (JJ Merelo)++ | 2 files
Revises ObjAt and Cool. Closes #2605
cpan-p6 New module released to CPAN! gtk-v3 (0.1.0) by 03MARTIMM 18:20
Geth doc: 90a23717c0 | Coke++ | xt/duplicates.t
fix skiplist
19:13
doc: 48a2782db9 | Coke++ | doc/Language/pod.pod6
skip code snippets that contain POD fragments

The fragments are valid, but won't compile as is.
synopsebot Link: doc.perl6.org/language/pod
doc: b97ce05798 | Coke++ | doc/Type/CompUnit/Repository/FileSystem.pod6
this method refers to a private method, so stub it

now the method can be compiled
synopsebot Link: doc.perl6.org/type/CompUnit::Repos...FileSystem
doc: 802b717bc7 | cfa++ | doc/Language/glossary.pod6
Fix broken glossary link.
19:21
synopsebot Link: doc.perl6.org/language/glossary
woolfy Perl 6 Weekly is delayed, maybe till tomorrow. This morning both lizmat and I woke up with a severe cold after meeting large amounts of people at FOSDEM in Brussels during the weekend. 19:41
leont Self care is important :-) 19:42
tadzik :( Get well!
ufobat_ when I have a signature in a role like method foo(Str $a) { .... } and I want to implement this interface 19:45
there is a difference whether I will implement foo(Str $a is copy) or foo(Str $a)
which i dislike because you add the is copy because of its implementation 19:46
because 'is copy' usually just saves you from having another variable inside
Geth doc: de882160f0 | Coke++ | 3 files
Clean up bracket/brace language
19:51
cfa o/ 19:55
still pondering whether this is a trap or not: colabti.org/irclogger/irclogger_lo...1-30#l329. any thoughts? 19:57
ufobat_ cfa, it is suprising to me 20:02
timotimo hum. you're using SetHash there which is explicitly "the mutable version of Set" 20:05
cfa right 20:06
the same applies to MixHash and BagHash
timotimo it's still surprising that you can "just" = into it
cfa the issue is ro vs. rw
where the ro method (or sub, same applies) means that = is storing
cfa vs. rw which is re-assigning 20:06
m: for (BagHash, MixHash, SetHash) -> $h { { .a = <a b>; .b = <a b>; .&dd } given class { has $.a = $h.new; has $.b is rw = $h.new }.new }
camelia <anon|1>.new(a => ("b"=>1,"a"=>1).BagHash, b => $("a", "b"))
<anon|1>.new(a => ("b"=>1,"a"=>1).MixHash, b => $("a", "b"))
<anon|1>.new(a => SetHash.new("a","b"), b => $("a", "b"))
timotimo yeah 20:07
cfa i you're checking the log---the subtler version is what bit me originally
because you end up with a nested SetHash vs. a fresh assignment
(nested due to store)
also, arrays don't behave this way which makes things doubly confusing imo 20:08
timotimo m: class { has $.a = Array.new }.new.a = 1, 2, 3
camelia ( no output )
cfa m: { .a = <c d>; .b = <c d>; .&dd } given class { has @.a = <a b>; has @.b is rw = <a b> }.new;
camelia <anon|1>.new(a => ["c", "d"], b => ["c", "d"])
timotimo m: do { .a = 1, 2, 3; .a.say; .perl.say } given class { has $.a = Array.new }.new 20:09
camelia 5===SORRY!5=== Error while compiling <tmp>
Unsupported use of do...given; in Perl 6 please use repeat...while or repeat...until
at <tmp>:1
------> 3 given class { has $.a = Array.new }.new7⏏5<EOL>
timotimo m: { .a = 1, 2, 3; .a.say; .perl.say } given class { has $.a = Array.new }.new
camelia [1 2 3]
<anon|1>.new(a => $[1, 2, 3])
cfa m: { .a = <a b>; .b = <a b>; .&dd } given class { has $.a = Array.new; has $.b is rw = Array.new }.new; 20:11
camelia <anon|1>.new(a => $["a", "b"], b => $("a", "b"))
cfa hmm
well, maybe that's confusing too :)
timotimo or it's consistent :P
cfa yeah
but in conclusion: aaaaaaagh
timotimo m: { .a = 1, 2, 3; .&dd } given class { has @.a } 20:12
camelia Cannot look up attributes in a <anon|1> type object
in method a at <tmp> line 1
in block <unit> at <tmp> line 1
timotimo m: { .a = 1, 2, 3; .&dd } given class { has @.a }.new 20:12
camelia <anon|1>.new(a => [1, 2, 3])
ufobat_ m: { .a = 1, 2, 3; .&dd } given class { has @.a is ro }.new 20:13
camelia 5===SORRY!5=== Error while compiling <tmp>
Can't use unknown trait 'is' -> 'ro' in an attribute declaration.
at <tmp>:1
expecting any of:
rw
readonly
box_target
leading_docs
trailing_docs
ufobat_ m: { .a = 1, 2, 3; .&dd } given class { has @.a is readonly }.new
camelia <anon|1>.new(a => [1, 2, 3])
timotimo our immutability is only shallow, as is our .clone 20:16
cfa the issue with all of this is that assigning to the readonly lvalue is implicitly a store 20:17
inside of the container
(ahem, feel free to reword that until it's not incorrect :))
ufobat_ I think most of the time when I write = I actually think := 20:18
cfa like, it's implicitly a store into the existing container rather than an a re-assignment
ufobat_ and i am not aware of the magic of = 20:19
cfa i think STORE stuff is underdocumented
at least, outside of @
ufobat_ jmerelo :p
cfa personally for these *Hash types i would've preferred the = on ro to give an error, requiring use of .push or .append methods 20:21
but hey
ufobat_ I feel the same. 20:22
cfa tangentially, in golfing this, { ...; .&dd } given class { ... }.new made me happy 20:24
timotimo yeah, given is super nice
cfa so is .&sub
timotimo yup
.&sub is barely shorter than sub $_
it's just the space 20:25
cfa so is class { }.new okay i'll stop
ufobat_ i recently discovered .&sub
:D
cfa ufobat_: :)
timotimo: yeah, true
timotimo: but i find the flow cleaner
especially here where just have a sequence of transformations on $_
timotimo true
cfa { .a = ...; .b = ...; c $_; }
vs.
{ .a = ...; .b = ...; .&c }
i find the latter lceaner 20:26
also, cleaner
ufobat_ timotimo, its a space plus you need the shift key 2times for the $ and for the _ at least for germany keyboards
timotimo gist.github.com/timo/44efb53aa1368...d1656c8aa9 - i should finally put this up on the ecosystem 20:27
jmerelo ufobat_: hi 20:45
busy with concurrent stuff, now.
jmerelo Just posted this: stackoverflow.com/q/54524245/891440 21:00
jnthn jmerelo: Something looks a tad off with the indentation in the for loop, around the `if` 21:03
jmerelo jnthn: right. Copy/pasta before golfing. Will fix. 21:04
jnthn: could channels leak? 21:06
jnthn: the problem is that I'm using that for an experiment, and it comes to a point where it simply hangs, taking several gigabytes of memory.
jnthn jmerelo: Nothing's impossible, but if they were then we'd perhaps notice a leak in every concurrent program, in that the VM-level bit of channels is the same thing that is used for thread pool schedulers 21:08
cfa jmerelo: have you profiled?
jnthn jmerelo: "it seems to be always using the same thread for "processing"" - what is "processing" referring to here?
jmerelo jnthn: the first one, of which theoretically I'm starting 4 21:09
cfa: not really. I'm not sure how to do that.
cfa you could add `start { sleep 30; exit }` before `await @promises;` 21:10
then run with --profile to see where you're allocating
ofc if you're only seeing heavy allocation later adjust to suit 21:11
jnthn jmerelo: Sure, though if it actually bottlenecks elsewhere (in the other react) then it may be there just ain't enough stuff in the channel.
cfa (just suggestion)
jnthn So one thread is enough
cfa er, just a*
jmerelo cfa: I can do that. Thanks.
jnthn (You aren't really starting threads, just allowing 4 concurrent threads to work on the thing if there's enough work to do)
RAKUDO_SCHEDULER_DEBUG=1 in the environment will tell you how many threads it's really making 21:12
jmerelo jnthn: OK, I'll try that.
I'm going AFK now. Any help will be much appreciated. 21:13
Thanks!
mercury^ Hi. I was here earlier, but as far as I can see no one has answered my questions in the meantime. 21:25
jnthn: I was told you might be able to help. Are you around?
timotimo the question was what was the design decision between type objects being undefined or being used for undefined versions? 21:26
mercury^ Yes, I was looking for a rationale for type objects being instances of themselves. 21:27
Then I was also confused by the following:
timotimo for one it's nice to be able to call Type.new 21:28
mercury^ p6: sub f($t, $x) returns Array[$t] { return $x; }; f(Int, Array[Int](3)); 21:29
camelia Type check failed for return value; expected Array[Mu] but got Array[Int] (Array[Int].new(3))
in sub f at <tmp> line 1
in block <unit> at <tmp> line 1
mercury^ timotimo: but you could still call Type.new; you could maybe not call instance.new. 21:30
timotimo then we'd also have to have something for static methods
p6: sub f($t, $x --> Array[$t]) { return $x; }; f(Int, Array[Int](3)); 21:31
camelia Type check failed for return value; expected Array[Mu] but got Array[Int] (Array[Int].new(3))
in sub f at <tmp> line 1
in block <unit> at <tmp> line 1
timotimo $t doesn't have a compile-time value, that's probably why that doesn't work 21:32
mercury^ Ah, so no dependent types.
timotimo i think that that doesn't work is a bug 21:33
p6: sub f(::T $t, $x --> Array[T]) { return $x; }; f(Int, Array[Int](3));
camelia Type check failed for return value; expected Array[T] but got Array[Int] (Array[Int].new(3))
in sub f at <tmp> line 1
in block <unit> at <tmp> line 1
timotimo BBL 21:34
mercury^ p6: sub f($t, Array[$t] $x) returns Array[$t] { return $x; }; f(Int, Array[Int](3)); 21:35
camelia Type check failed in binding to parameter '$x'; expected Array[Mu] but got Array[Int] (Array[Int].new(3))
in sub f at <tmp> line 1
in block <unit> at <tmp> line 1
timotimo fwiw the "returns" annotation is on the way out, or at least fallen out of favor 21:36
mercury^ Oh, ok.
jnthn mercury^: I doubt there was one rationale so much as it fitting neatly with the language design overall. Types being values meant some object had to exist to represent the type. At the same time, it wasn't desirable to confuse a type and its backing meta-object, which has its own distinct type. And making the type be represented as an empty instance gave typed undefined values. Further, it meant `new` and 21:37
other constructors were simply normal methods, which is an idea going back to Perl 5.
So, the design satisfied quite a few goals at once. 21:38
mercury^ I suspect that what I would call a type is what you call meta-object.
jnthn It means stuff like `my Foo $x .= new` would also Just Logically Work: a typed variable $x is populated initial with the type object Foo, and then new method is called on that (.) and assigned (=) into the result.
I'd say "type" is a pretty overloaded word used to mean quite a few different things anyway. 21:40
I see a meta-object as more saying what a given type means.
mercury^ I would say that the type determines the structure of its values. 21:41
jnthn So Foo represents the type and Foo.HOW is the object that describes how the type Foo works (how does it relate to other types? how does it dispatch methods? how does it represent its state?)
In theory a type could have multiple different representations. In fact, a given meta-object type might be used with multiple different representations. 21:42
For example, ClassHOW describes how a class functions, but it might be used with P6opaque (the default), CStruct (O(1) marshalling to C structure layout), etc. 21:43
jnthn How method dispatch works and subtyping relationships are different concerns from how an object is laid out in memory. 21:43
mercury^ So, for every type there is a value of type ClassHOW that describes how it "works"?
jnthn Well, for every type defiend with the `class` keyword, yes. And assuming no module has been imported that changes what `class` means in that scope. :) 21:44
An `enum` type is backed by EnumHOW, `subset` by SubsetHOW, etc. 21:45
Some modules introduce their own kind of type; for example, the Red ORM introduces a `model` keyword backed by its own meta-object.
mercury^ I find it slightly odd that values of the type are responsible for constructing values of the type, instead of the respective ClassHOW value being responsible for that.
Although I assume that the values of the type delegate to the respective ClassHOW value? 21:46
How much of the HOW stuff is part of the language? 21:48
jnthn Well, the resolution of, say, the `new` method delegates to that, yes.
Increasingly much of it; we started out with very little of it specified, and gradually, as things have settled down, covered increasing amounts of it in the language test suite, which is what specifies the language.
mercury^ So that KnowHOW which is its own HOW will also be part of it eventually? 21:49
jnthn I'm not sure about that; I think the `SomePerl6Type.HOW` level we'll specify, but once you're asking .HOW.HOW it's implementation defined. 21:50
Don't want to box in future implementations too much, and there's probably little practical reason to be digging that deep. 21:51
Don't really want to box in current implementations too much either. :)
mercury^ Well, the advantage of X.HOW ≡ X being part of the language would be that one can dig as deep as one likes. :D 21:52
jnthn Yes, I find that it bottoms out somewhere like that pleasing. 21:53
mercury^ jnthn: do you know what is going on with the errors in my attempt to see if the language has dependent types? 21:54
jnthn mercury^: Traits are applied at compile-time, but parameters are passed at runtime, and it's not (yet? :)) smart enough to know to perhaps leave the thing generic and instantiate it at runtime. 21:55
afk for a bit 21:58
mercury^ p6: sub t($b) { return b ?? Int !! Cool; }; sub f($b, t($b) $x --> t($b)) { return $x; }; f(True, 3); 21:59
camelia 5===SORRY!5=== Error while compiling <tmp>
Expected a term, but found either infix ?? or redundant prefix ?
(to suppress this message, please use a space like ? ?)
at <tmp>:1
------> 3sub t($b) { return b ??7⏏5 Int !! Cool; }; sub f…
mercury^ p6: sub t($b) { b ?? Int !! Cool; }; sub f($b, t($b) $x --> t($b)) { return $x; }; f(True, 3);
camelia 5===SORRY!5=== Error while compiling <tmp>
Expected a term, but found either infix ?? or redundant prefix ?
(to suppress this message, please use a space like ? ?)
at <tmp>:1
------> 3sub t($b) { b ??7⏏5 Int !! Cool; }; sub f($b, t(…
mercury^ Huh, I thought the conditional expression was written like that?
Kaiepi m: use NativeCall; class Foo is repr('CStruct') { my Str constant LIB = './foo'.IO.absolute; sub foo_init(Pointer[::?CLASS] is rw --> int32) is native(LIB) {*} } 22:00
camelia 5===SORRY!5=== Error while compiling <tmp>
An exception occurred while parameterizing Pointer
at <tmp>:1
Exception details:
Cannot resolve caller ACCEPTS(Bool:U: Foo); none of these signatures match:
(Bool:D: Mu \topic, *%_)
Kaiepi is there a workaround for this?
mercury^ Oh, I forgot the sigil.
p6: sub t($b) { $b ?? Int !! Cool; }; sub f($b, t($b) $x --> t($b)) { return $x; }; f(True, 3);
camelia 5===SORRY!5=== Error while compiling <tmp>
Invalid typename 't' in parameter declaration.
at <tmp>:1
------> 3($b) { $b ?? Int !! Cool; }; sub f($b, t7⏏5($b) $x --> t($b)) { return $x; }; f(Tru
mercury^ p6: sub t($b) { $b ?? Int !! Cool; }; sub f($b, &t($b) $x --> t($b)) { return $x; }; f(True, 3); 22:01
camelia 5===SORRY!5===
Shape declaration with () is reserved;
please use whitespace if you meant a subsignature for unpacking,
or use the :() form if you meant to add signature info to the function's type
at <tmp>:1
------> 3$b) { $b ?? Int…
mercury^ p6: sub t($b) { $b ?? Int !! Cool; }; sub f($b, :t($b) $x --> t($b)) { return $x; }; f(True, 3); 22:02
camelia 5===SORRY!5=== Error while compiling <tmp>
Redeclaration of symbol '$b'
at <tmp>:1
------> 3 { $b ?? Int !! Cool; }; sub f($b, :t($b7⏏5) $x --> t($b)) { return $x; }; f(True,
expecting any of:
shape declaration
mercury^ Sorry for the spam. :( 22:03
TreyHarris Oh--a discussion on a perl6/doc issue (github.com/perl6/doc/issues/1185) reminded me that I created a `perl6-contrib` organization to save the name in case it became useful at some point, but I just realized I never told anyone about it for some reason, even though I set it up complete with a free-sketched Camelia as an avatar picture. (I assume I got interrupted and never came back to it.) But in case 22:06
anyone ever has a use for it, it's at github.com/perl6-contrib -- just let me know and I'll give access
hythm_ p6: role R {}; my @a does R; my @b = @a; say @a.WHAT; say @b.WHAT; 22:51
camelia (Array+{R})
(Array)
hythm_ how to get a copy of @a (not binding)? 22:53
hythm_ so i can modify @a and @b separately 22:54
cfa timotimo: re: your mutator tunnel operator, i think that's often referre to as method cascading 22:58
though i guess you take an arbitrary function 23:00
timotimo how does it look in other languages? 23:03
timotimo so dart has .. for that, interesting 23:11
Kaiepi how else can i manage errors when initializing a struct besides passing a double pointer to the struct to the init function and returning the error number? i can't do it that way because of github.com/rakudo/rakudo/issues/2673 23:22
i tried passing a void pointer instead and casting it to Pointer[::?CLASS] but that throws the same error
cfa timotimo: yeah, the .. is quite nice (as is smalltalk's ;) 23:26
Kaiepi m: role R {}; my @a does R; my @b = @a.clone; say @a.WHAT; say @b.WHAT 23:28
camelia (Array+{R})
(Array)
hythm_ p6: role R {}; my @a does R; my $b = @a; say @a.WHAT; say $b.WHAT; 23:42
camelia (Array+{R})
(Array+{R})
hythm_ p6: role R {}; my @a does R; my $b = @a; my @b = $b; say @b.WHAT; 23:43
camelia (Array)
hythm_ so i can't copy @ or % as is? only $ works. 23:49
AlexDaniel weekly: Wanted: New release manager. As AlexDaniel temporarily won't have enough time in the upcoming months, a new release manager is needed. If you have time and passion for Perl 6, please let us know. A glimse of the responsibilities is here: github.com/rakudo/rakudo/blob/mast..._guide.pod 23:52
notable6 AlexDaniel, Noted!
cfa m: role Cascading { method cascade (&code) { code(self); self } }; ("foobarbaz".comb.Array but Cascading).cascade(*.splice(3,1,"X")).join.say 23:57
camelia fooXarbaz
cfa enh 23:57