đŚ Welcome to Raku! raku.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: colabti.org/irclogger/irclogger_log/raku Set by ChanServ on 14 October 2019. |
|||
SmokeMachine | colabti.org/irclogger/irclogger_lo...12-09#l218 | 00:00 | |
Am I crazy? What am I understanding wrong? | 00:01 | ||
Xliff | SmokeMachine: ?? | ||
SmokeMachine: I am talking about having code execute when you do: $a = $r but Role; | 00:02 | ||
So code in Role will get executed when it is added to $r via but and assigned to $a; | |||
Actually, I am hoping that vrurgs changes to roles will make this possible via TWEAK. | 00:03 | ||
SmokeMachine | m: role R { say âworking?â }; say 42 but R | ||
camelia | working? 42 |
||
SmokeMachine | Xliff: that? ^^ | 00:04 | |
jnthn: what am I miss understanding here??? colabti.org/irclogger/irclogger_lo...12-09#l218 | 00:05 | ||
Thatâs not working! | 00:08 | ||
00:11
ellipsis left
00:16
dotdotdot joined
|
|||
Xliff | SmokeMachine: Oh! .... Hmmm... | 00:17 | |
That.... was not what I was expecting! :) | |||
Thanks! I will see if it satisfies my use-case! | |||
m: class A { has $!a }; role R { method a { say $!a }; $!a = 42; }; my $a = A.new; $a but R; $a.a | 00:18 | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable $!a used where no 'self' is available at <tmp>:1 ------> 3!a }; role R { method a { say $!a }; $!a7â5 = 42; }; my $a = A.new; $a but R; $a.a |
||
Xliff | m: class A { }; role R { has $!a; method a { say $!a }; $!a = 42; }; my $a = A.new; $a but R; $a.a | 00:19 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable $!a used where no 'self' is available at <tmp>:1 ------> 3e R { has $!a; method a { say $!a }; $!a7â5 = 42; }; my $a = A.new; $a but R; $a.a |
||
Xliff | SmokeMachine: ^^ | ||
SmokeMachine | 00:18 <Xliff> m: class A { has $.b }; role R { method a { say $.b }; $!a = 42; }; my $a = A.new; $a but R; $a.a | 00:21 | |
m: class A { has $.b }; role R { method a { say $.b }; $!a = 42; }; my $a = A.new; $a but R; $a.a | |||
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable $!a used where no 'self' is available at <tmp>:1 ------> 3.b }; role R { method a { say $.b }; $!a7â5 = 42; }; my $a = A.new; $a but R; $a.a |
||
SmokeMachine | Xliff: yes... I donât think that will work... there is no obj at compose time... | 00:22 | |
Xliff | SmokeMachine: kk | 00:24 | |
www.youtube.com/watch?v=_aCxa-LJyNE&loop=0 -- BREAKBEATS! | 00:28 | ||
00:55
sena_kun left
|
|||
Demos[m] | what's the best way to implement eval, but controlled? | 01:00 | |
like in a subinterpreter with control over scope and interpreter/jit state? | |||
Xliff | Demos[m]: What are you trying to eval? | 01:08 | |
01:20
finanalyst left
01:24
stoned75 left
01:38
rypervenche left
01:41
rypervenche joined
02:04
wildtrees left
02:12
wamba left
02:14
b2gills left
02:28
ZzZombo joined
02:29
b2gills joined
02:47
ZzZombo_ joined
02:50
ZzZombo left,
ZzZombo_ is now known as ZzZombo
03:02
MasterDuke left
03:25
xinming_ left
03:27
xinming_ joined
03:56
ZzZombo_ joined
03:57
xinming_ left
04:00
ZzZombo left,
xinming_ joined,
ZzZombo_ is now known as ZzZombo
04:46
epony left
05:04
ZzZombo_ joined
05:07
ZzZombo left,
ZzZombo_ is now known as ZzZombo
05:27
epony joined
|
|||
xinming_ | w | 05:58 | |
06:04
epony left
06:09
epony joined
06:43
jmerelo joined
07:06
Xliff left
07:30
jmerelo left
07:42
rindolf joined
|
|||
SmokeMachine | Is zostay.com down? | 07:44 | |
xkr47 | m: say Any.HOW, Any.HOW.HOW, Any.HOW.HOW.HOW | 08:10 | |
camelia | Died with X::Method::NotFound in block <unit> at <tmp> line 1 |
||
xkr47 | bah! | ||
if I do them one at a time in REPL I get: | 08:11 | ||
Perl6::Metamodel::ClassHOW.new | |||
(low-level object `NQPClassHOW`) | |||
(low-level object `KnowHOW`) | |||
08:16
wamba joined
08:45
huf left
08:49
xinming_ left
08:50
xinming_ joined
09:18
epony left
09:23
epony joined
|
|||
jnthn | If you stick .^name on the end of each of those, it'll likely do the same | 09:52 | |
09:57
finanalyst joined
10:07
kensanata joined,
huf joined
10:11
vividsnow left
10:37
sena_kun joined
10:40
pilne left,
sena_kun left,
sena_kun joined
10:45
vividsnow joined
10:49
sena_kun left
10:51
holyghost left
10:54
chloekek joined
|
|||
xkr47 | jnthn, yeah, I was just poking it with a stick for fun :) | 11:03 | |
jnthn | :) | 11:06 | |
Also, fun fact: once you reach KnowHOW, it's defined in terms of itself, so you just go in circles. :) | |||
11:09
Guest38485 joined
12:12
epony left
12:23
epony joined
13:13
finanalyst left
13:20
kensanata left
13:31
lucasb joined
13:47
xinming_ left,
xinming_ joined
13:57
mid_laptop joined
14:03
abraxxa left
14:25
wamba left
|
|||
Kaeipi | releasable6, status | 14:29 | |
releasable6 | Kaeipi, Next release in â1 day and â4 hours. There are no known blockers. 0 out of 277 commits logged | ||
Kaeipi, Details: gist.github.com/23a90e80a98c3a5d4d...6f995747ca | |||
14:31
wamba joined
14:38
sena_kun joined
15:04
kybr_ left
15:10
mid_laptop left,
mid_laptop joined
15:31
kalkin joined
|
|||
kalkin | hi | 15:31 | |
Do I assume right that Pod parsing is utterly broken? | 15:41 | ||
e.g: begin =item | 15:42 | ||
foo | |||
=end item | |||
is parsed as code block | |||
instead of named block | |||
(I meant of course =begin item) | |||
tadzik | did you mean "=begin item"? | 15:45 | |
tellable6 | 2019-12-17T10:41:30Z #raku-dev <patrickb> tadzik: I brought up the rakudobrew -> rakubrew rename discussion recently: colabti.org/irclogger/irclogger_lo...12-12#l170 | ||
2019-12-17T10:42:09Z #raku-dev <patrickb> tadzik: I don't want to just decide this over your head. Can you have another look? | |||
tadzik | oh :) | ||
tellable6: tell patrickb the rename may be worth it if you're doing the whole rewrite, re-setup, re-marketing etc for the sake of reducing confusion | 15:46 | ||
tellable6 | tadzik, I'll pass your message to patrickb | ||
tadzik | tellable6: tell patrickb I really don't think anyone will ever be confused by the name "rakudobrew" realistically, so for that reason I don't think it's worth bothering with. But since you're changing rakudobrew so much and will require all the new setups and whatnot, then rename makes sense imo | 15:47 | |
tellable6 | tadzik, I'll pass your message to patrickb | ||
tadzik | tellable6: tell patrickb kind of like plenv has a different name to perlbrew: they are different projects, incompatible, even though they achieve pretty much the same thing :) | 15:48 | |
tellable6 | tadzik, I'll pass your message to patrickb | ||
15:51
cpan-raku left
15:52
Guest38485 left
|
|||
kalkin | not item â input | 15:54 | |
15:54
chloekek left
|
|||
[Coke] | .seen jjmerelo | 15:54 | |
tellable6 | [Coke], I saw jjmerelo 2019-12-19T17:43:34Z in #raku: <jmerelo> Today the third country sending more visitors is Vietnam | ||
kalkin | sorry for mixup | ||
also if Pod::Block::Code is the right one for =begin input, why don't it have a type attribute, so I can decide how to display it | 15:55 | ||
Reading older code i see that there was a type attribute on Pod::Block::Named | 15:56 | ||
15:59
cpan-raku joined,
cpan-raku left,
cpan-raku joined
|
|||
tadzik | github.com/perl6/roast/blob/master...ited.t#L15 if these tests are not broken yet then it absolutely shouldn't give you ::Code | 16:00 | |
but tbh the last time I dealt with this was around the time these tests were written ;) | 16:01 | ||
I'd be surprised if the word "input" somehow made it special though | |||
kalkin | tadzik: well i have some code testing it and it returns Block::Code, also reading Grammar.nqp there is this line: token pod-delim-code-typ { code | input | output } | 16:09 | |
tadzik | huh | 16:10 | |
that's not me then anymore, must've been someone else :P | |||
I can see the logic, I think: I guess it's supposed to mean "expected input/output for this thing", which you'd want rendered verbatim I guess | 16:11 | ||
kalkin | also another bug, which is not covered with roast | 16:13 | |
sub foo($asd #= asasd, | |||
$bar #= "asd") | 16:14 | ||
doesn't work | |||
tadzik | I think the comma should come before the comment | ||
kalkin | I don't remember exactly what, i think $pod.content[0].defined but $pod.content[1].undefined | ||
tadzik: yes comma before | |||
just my sloppy typing | |||
tadzik | nod nod | 16:15 | |
kalkin | I'm not sure how to handle the last bug i shown. Should I add a roast test and do a PR? Open an issue with rakudo/rakudo? | ||
Ohh and also in current stable rakudo, this is broken: | 16:17 | ||
+sub so-many-params-with-trailers( | |||
+ Str $param, #= first param | |||
+ Int $other-param, #= second param | |||
+ Str $third-param | |||
+) {} | |||
the second param is undefined | 16:18 | ||
but in master it works | |||
16:19
Kaeipi left,
Kaeipi joined
16:34
socomm joined
|
|||
kalkin | so for the last one I opened a PR github.com/perl6/roast/pull/602 | 16:36 | |
16:38
sena_kun left
16:41
rindolf left
16:46
rindolf joined
|
|||
kalkin | I had the chat more lively in memory. Is it because of the holidays? | 16:51 | |
16:53
sena_kun joined
|
|||
socomm | I upgraded perl recently and the repl changed. | 16:56 | |
16:57
socomm left
17:01
vividsnow left
17:02
vividsnow joined
17:03
no-n joined
17:06
xinming_ left
17:08
xinming_ joined
|
|||
tadzik | kalkin: probably :) | 17:13 | |
17:36
kalkin left,
finanalyst joined
17:37
kalkin joined
|
|||
kalkin | And another bug in Pod parsing submitted | 17:54 | |
18:04
stoned75 joined
|
|||
kalkin | All the Pod6 stuff is pretty broken. I seriously questioning if no one writes a elaborate pod docs or views them in p6doc? | 18:11 | |
Some things are very simple to fix, once you spotted that they are actually not rendered by p6doc | |||
[Coke] | We use it to generate our own doc web site, but I think that is the biggest use case | 18:16 | |
kalkin | [Coke]: you probably only use named blocks | 18:20 | |
Once you start working with leading & trailing pod it breaks | |||
[Coke] | Thanks for finding bugs; I know it's frustrating, but having them documented will help get 'em fixed. | 18:22 | |
18:22
wamba left
|
|||
kalkin | [Coke]: The parts which I can fix in Pod::To::Text I'm already fixing, just need people to review my PRs | 18:23 | |
I made two for displaying subsets and enums, third one will be online in a few minutes | |||
18:29
ptrd joined
|
|||
ptrd | I have this has declaration my %h = 1 => [2,3], 4 => [2,8], 5 => [3,8,2]; | 18:32 | |
I'd like to include the type of %h in its declaration | |||
what can that be? | |||
*this hash declaration | |||
18:34
AlexDaniel left
|
|||
kalkin | my Array %h = 1 => [2,3] | 18:35 | |
but my Array[Int] %h = 1 => [2,3] doesnt work | |||
ptrd | Let suppose I have my %h = 1 => ['a', 'b'], 2=> ['c', 'd']; | ||
kalkin | p6: my Array[Int] %h = 1 => [2,3], 4 => [2,8], 5 => [3,8,2] | 18:36 | |
camelia | Type check failed in assignment to %h; expected Array[Int] but got Array ($[2, 3]) in block <unit> at <tmp> line 1 |
||
ptrd | what is the strongest possible type declaration for %h ? | ||
kalkin | I'm pretty sure there should be a way to declare Array[Int] %h somehow | 18:37 | |
18:38
sena_kun left
|
|||
guifa | ptrd: ValueType %hash{KeyType} | 18:40 | |
err | |||
so your definition is fine | 18:41 | ||
The problem is that the literal [2,3]Â is not an Array[Int] | |||
Rather itâs an Array[Any] | |||
p6: my Array[Int] %h = 1 => Array[Int].new(2,3), 4 => Array[Int].new(2,8), 5 => Array[Int].new(3,8,2) | 18:42 | ||
camelia | ( no output ) | ||
guifa | p6: my Array[Int] %h = 1 => Array[Int].new(2,3), 4 => Array[Int].new(2,8), 5 => Array[Int].new(3,8,2); say %h | ||
camelia | {1 => [2 3], 4 => [2 8], 5 => [3 8 2]} | ||
guifa | Strong typing can be annoying sometimes like that, and sometimes subsets can be easier: | 18:43 | |
p6: subset IntArray is Array where *.all ~~ Int; my IntArray %h = 1 => [2,3], 4 => [2,8], 5 => [3,8,2]; say %h | 18:44 | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> No such method 'add_parent' for invocant of type 'Perl6::Metamodel::SubsetHOW' at <tmp>:1 |
||
guifa | p6: subset IntArray of Array where *.all ~~ Int; my IntArray %h = 1 => [2,3], 4 => [2,8], 5 => [3,8,2]; say %h | ||
camelia | Type check failed in assignment to %h; expected IntArray but got Array ($[2, 3]) in block <unit> at <tmp> line 1 |
||
guifa | hmmm | 18:45 | |
p6: subset IntArray where {Â $_ ~~ Array && .all ~~ Int}; my IntArray %h = 1 => [2,3], 4 => [2,8], 5 => [3,8,2]; say %h | 18:46 | ||
camelia | {1 => [2 3], 4 => [2 8], 5 => [3 8 2]} | ||
guifa | there we go | ||
guifa needs his coffee | |||
kalkin | p6: class F { method g(--> Str:D) {}}; my $f = F.new; my &g = $f.g; say &g.returns; | 18:47 | |
camelia | (Mu) | ||
kalkin | p6: sub g(-->Str:D) {}; &g.returns | ||
camelia | ( no output ) | ||
kalkin | p6: sub g(-->Str:D) {}; say &g.returns | ||
camelia | (Str:D) | ||
guifa | kalkin: I know a lot of the leading and trailing pod hasnât really had much work done on it. The most recent bit was done by tbrowder to allow for embedded stuff/newlines, but I donât think as many people are using them. | ||
kalkin | Why does a returns on a method return Mu while on the sub the actual return type | 18:48 | |
Bug or feature? | |||
This breaks my pr: github.com/rakudo/rakudo/pull/3369/ | 18:49 | ||
18:49
ptrd left
|
|||
guifa | p6: class F { method g(--> Str:D) {}}; say F.g.returns | 18:50 | |
camelia | Nil | ||
guifa | err duh | ||
kalkin: very much feature | 18:51 | ||
p6: class F { method g(--> Str:D) {}}; my $f = F.new; my &g = $f.^find_method('g'); say &g.returns; | |||
camelia | (Str:D) | ||
guifa | $f.g is actually calling g | 18:52 | |
so itâs an empty result | |||
18:52
sena_kun joined
|
|||
guifa | The bug seems to be allowing the assignment to &g | 18:52 | |
kalkin | p6: class F { method g(--> Str:D) {}}; say F.g.signature; | 18:53 | |
camelia | Nil | ||
guifa | p6: class F { method g(--> Str:D) {}}; say F.^find_method('g').signature | 18:54 | |
camelia | (F: *%_ --> Str:D) | ||
kalkin | guifa: but in my pr I get the method from $pod.WHEREFORE so it shouldn't be called it should be callable(??) i think | ||
I also tried $pod.WHEREFORE.signature.returns | 18:55 | ||
p6: class F { method g(--> Str:D) {}}; say F.^find_method('g').signature.returns | |||
camelia | (Str:D) | ||
18:57
wildtrees joined
|
|||
kalkin | github.com/rakudo/rakudo/pull/3369...48dL85-R91 | 18:57 | |
lines 85-91 | |||
replacing $_.returns with $_.signature.returns also returns Mu | 18:58 | ||
19:01
kybr_ joined
|
|||
kalkin | also ^find.method is not a solution if it's a multi | 19:03 | |
19:05
ptrd joined
|
|||
guifa | hmm thatâs odd indeed | 19:06 | |
It should work AFAICT tio.run/##K0gtyjH7/z85J7G4WMFRoVqB...ihVqH2/38A | 19:09 | ||
ptrd | does it work on your computer with version 2019.03 ? | 19:11 | |
kalkin | will try | 19:12 | |
guifa | ptrd: did you see my message about parameterized stuff? (your connection died on timeout so wanted to make sure you got it) | 19:13 | |
ptrd | you mean where you posted "It should work AFAICT https: ..." | 19:14 | |
yes I got it | |||
guifa | no | ||
ptrd | in that case I lost it | ||
guifa | Let suppose I have my %h = 1 => ['a', 'b'], 2=> ['c', 'd']; | 19:15 | |
from that message | |||
ptrd | yes | ||
guifa | You have two options. If you paramterize the values, e.g. Array[Int] %h = âŚÂ then you have to make sure that you give it typed values. Literal arrays made with [âŚ] are always Array[Any], so | 19:16 | |
kalkin | guifa: will take some time, need to rebuild rakudo + moarvm + nqp | ||
guifa | p6: my Array[Int] %h = 1 => Array[Int].new(2,3), 4 => Array[Int].new(2,8), 5 => Array[Int].new(3,8,2); say %h | ||
camelia | {1 => [2 3], 4 => [2 8], 5 => [3 8 2]} | ||
guifa | Second option which requires less typing out and is probs more intuitive generally is to use a subset which will let you still use literal arrays | 19:17 | |
p6: subset IntArray of Array where .all ~~ Int; my IntArray %h = 1 => [2,3], 4 => [2,8], 5 => [3,8,2]; say %h | 19:18 | ||
camelia | {1 => [2 3], 4 => [2 8], 5 => [3 8 2]} | ||
ptrd | ok, I think I understand now why Array[Int].new is needed before the value | 19:19 | |
thanks | 19:20 | ||
Kaeipi | oh this problem! | 19:21 | |
i use it in the synopsis for Kind::Subset::Parametric modules.raku.org/dist/Kind::Subset...pan:KAIEPI | 19:22 | ||
ptrd | is there a link you can post with examples of advanced type declarations | 19:23 | |
or with examples of at least nontrivial type declarations | 19:24 | ||
guifa | I donât think thereâs a great one-stop-shop for that. We should probably do that actually. Parameterizing hashes is kind of hidden in the hash page | ||
kalkin | guifa: does not work on rakduo-2019.03.1 | ||
guifa | oh crap, apparently Iâm running on 2018.12 on my desktop | 19:25 | |
guifa should have done --version before testing | |||
Kaeipi | ptrd, modules.raku.org/dist/Kind::Subset.../02-will.t shows a few simpler examples | ||
guifa | Sorry for wasting your cycles :( | ||
Kaeipi | oh mb misread | 19:26 | |
kalkin | guifa: Gentoo user here. I'm used to this :) | ||
guifa: just to make sure I will rebuild 2018.12 and test it. May be it's my setup´s fault (Which i doubt, but you never know). | 19:27 | ||
Kaeipi | which sort of type are you looking to do advanced stuff with ptrd ? | 19:30 | |
19:31
sauvin left
|
|||
ptrd | I just like strong typing, that means less debugging | 19:33 | |
or debugging closer to the location of the error | 19:34 | ||
Kaeipi | you might be interested in this, which shows off how to make classes parametric stackoverflow.com/questions/575546...1&lq=1 | ||
it's how i wrote my Failable and Kind libraries | |||
kalkin | guifa: I think I found the issue. It's not the version | 19:37 | |
let me rebuild the current master | |||
or no i do not even need this | |||
guifa | Kaeipi: Maybe if I get chance I could write a Strongly Typing Raku Code page. There are definitely a couple of gotchas, and it could include mentions of Subsets, :D/:U, parameterization, etc | 19:38 | |
kalkin | github.com/rakudo/rakudo/pull/3369...56848dR118 â this line is an issue, but only on methods | 19:40 | |
Kaeipi | that would be helpful guifa | ||
kalkin | If I remove the $returns !~~ Mu I get Str:D on a method | ||
Kaeipi | i've been chipping away at documenting the MOP so people can know about the behaviour that drives types in raku | ||
kalkin | but on a sub it works even with the check | ||
this is weird | 19:41 | ||
guifa | oooh waaaait makes total sense now | ||
for $returns !~~ Mu itâd have to be ⌠I dunno, some very unique type | 19:42 | ||
because $returns will always by definition be Mu | |||
even Nil is Mu | |||
lizmat | perhaps make a lexically visible constant that is Mu.new | 19:44 | |
and check for =:= | |||
alternately, make it a multi? | |||
kalkin | no it doesnt | ||
hmm | |||
lizmat: will try thanks | |||
it doesn't work on subs. it worked as I checked for !~~ Nil | 19:45 | ||
19:50
ptrd left
|
|||
kalkin | lizmat: you mean something like this: constant $mu = Mu.new; unless $returns =:= Mu { ... } ? | 19:50 | |
19:50
Scimon joined
|
|||
lizmat | yeah, something like that ? | 19:50 | |
Scimon | Evening all. | ||
tbrowder | guifa: in the discussion with kalkin do you see a problem caused by my pod declarator and embedded pod changes? | 19:51 | |
Scimon | There was this question on Stack Overflow and I am wandering if chaining works the way I think : stackoverflow.com/questions/593995...y/59399943 | ||
lizmat | m: constant A = Mu.new; sub a(Mu \a = A) { dd a =:= A }; a; a Nil # kalkin | 19:52 | |
camelia | Bool::True Bool::False |
||
Scimon | m: sub infix:<eog> ( $a, $b ) is assoc<chain> is pure { note $a, $b; so $a == $b+1 };say 5 eog 4 eog 3 eog 2 eog 1; | ||
camelia | 21 False 3True 4False 5False |
||
guifa | tbrowder: I donât think so, I think kalkinâs stuff is unrelated, was just mentioning you because you had recently done some work to boost up the pre/post declaratorsâs functionality, but otherwise I think the pre/post declarators arenât used very much ATM | ||
Scimon | Opps. Without the notes | 19:53 | |
m: sub infix:<eog> ( $a, $b ) is assoc<chain> is pure { so $a == $b+1 };say 5 eog 4 eog 3 eog 2 eog 1 | |||
camelia | False | ||
Scimon | From the documentation on what is assoc<chain> says I'd expect that to work | 19:54 | |
m: sub infix:<eog> ( $a, $b ) is assoc<chain> is pure { so $a == $b+1 };say 5 eog 4 eog 3 eog 2 eog 1;say ( (5 eog 4) and (4 eog 3) and (3 eog 2) and (2 eog 1) ); | 19:55 | ||
camelia | False True |
||
tbrowder | if someone can show me how to add an option to raku, i think i could really help with at least the leading declarator block. at the moment, one has to declare an environment variable. but with a raku option you could retain user formatting which imho could really be useful. | 19:56 | |
Scimon | (As for PRE and POST blocks I think there biggest issue is the docs don't really highlight what they are there for.) | ||
(Going to read the history) | |||
tbrowder | Scimon: look at S26 | 19:58 | |
guifa | Scimon: biggest current use is on attributes on a MAIN function, | ||
19:59
ufobat__ joined
|
|||
kalkin | p6: constant A = Mu.new; sub a(Mu \a = A) { dd \a =:= A }; sub f() {}; a &f; # lizmat | 20:02 | |
camelia | Bool::False | ||
guifa | Scimon: this reveals the problem | ||
sub infix:<eog> ( $a, $b ) is assoc<chain> is pure { say "$a = $b + 1? ", (so $a == $b+1); (so $a == $b+1) }; say 5 eog 4 eog 3 eog 2 eog 1 | 20:03 | ||
evalable6 | 2 = 1 + 1? True 3 = True + 1? False 4 = False + 1? False 5 = False + 1? False False |
||
20:03
ufobat_ left
|
|||
kalkin | ups | 20:03 | |
guifa | Itâs being treated with left assoc | ||
kalkin | p6: constant A = Mu.new; sub a(Mu \a = A) { dd \a =:= A }; sub f() {}; a &f.returns; # lizmat this one is the counter example | 20:04 | |
camelia | Bool::False | ||
Scimon | Yeah... So... I should check if there's an issue? | ||
kalkin | It should be Bool::True | ||
lizmat | m: constant A = Mu.new; sub a(Mu \a = A) { dd \a =:= A }; sub f(--> Nil) {}; a &f.returns; | 20:05 | |
camelia | Bool::False | ||
lizmat | m: sub f() {}; dd &f.returns; | ||
camelia | Mu | ||
guifa | Scimon: I think there is. I tried changing it to is assoc(ârightâ) and nothing changes in order of ops, which of course makes no sense because it should be exactly backwards | ||
lizmat | kalkin: why should that be true? You're passing a parameter, so by definition it's going to be False | 20:06 | |
kalkin | lizmat: i want to print the return type of a function if the function is defined to return anything | ||
lizmat | then you should check for =:= Mu I think | ||
m: sub a() {}; dd &a.returns | 20:07 | ||
camelia | Mu | ||
kalkin | lizmat: doesn't work either | ||
p6: constant A = Mu.new; sub a(Mu \a = A) { dd \a =:= Mu }; sub f() {}; a &f.returns; | 20:08 | ||
camelia | Bool::False | ||
lizmat | m: sub a(Mu \a) { dd a =:= Mu }; sub b() {}; a &b.returns | ||
camelia | Bool::True | ||
kalkin | m: sub a(Mu \a) { dd a =:= Mu }; sub b(--> Str:D) {}; a &b.returns | 20:09 | |
camelia | Bool::False | ||
kalkin | nice! | ||
Scimon | Is nqp strict? | ||
lizmat | Scimon: yes, afaik | ||
kalkin: you don't need the Mu.new rigamarole | |||
I misunderstood your issue | |||
kalkin | lizmat: Thank you very much now it works! | 20:10 | |
lizmat | and "dd a" is something else then "dd \a" :-) | ||
Scimon | Reading github.com/rakudo/rakudo/blob/3f69...etaops.pm6 trying to work out if that's the code that's supposed to handle it. | ||
kalkin | One more question why doesn't it work if I define sub a (Mu $a) ? | ||
lizmat | kalkin: using $a in the signature, will create a container, and that will thwart the check with =:= | 20:11 | |
m: sub a(Mu $a) { dd $a<> =:= Mu }; sub b() {}; a &b.returns # unless you decont | |||
camelia | Bool::True | ||
lizmat | I prefer the \a in signature | ||
kalkin | lizmat: I think i will use decont, because in this specific case the arguments is named $returns, which surprisingly works with \returns, but is confusing when used with syntax highlighting | 20:13 | |
lizmat | sure... :-) | 20:14 | |
20:14
pilne joined
|
|||
kalkin | tbrowder: this are the issues with trailing/leading pod github.com/rakudo/rakudo/issues/3368 & github.com/rakudo/rakudo/issues/3367 | 20:16 | |
(if you are interested) | |||
guifa | Scimon: the Metaops.pm6 looks fine. My guess is the problem is somewhere itâs ignoring the chain/right definitions, because I tried ânonâ and that worked, ditto for left. | 20:17 | |
Scimon | So is assoc<list> works because it tries to match against a sub expecting all the values or a slurpy. | ||
20:18
benjif_ is now known as benjif
|
|||
guifa | if assoc<list> works, you could probably cheat by writing the chaining code yourself. But there is definitely a bug somewhere | 20:20 | |
Scimon | Yeah... that's why I thought. I'll raise an issue (or see if there already is one) | 20:21 | |
20:25
mid_laptop left
20:26
rindolf left
|
|||
Scimon | github.com/rakudo/rakudo/issues/3370 | 20:27 | |
(Feeling crappy, signing off, have a happy holiday if I'm not around for a bit) | 20:28 | ||
guifa | Scimon: hope you feel better! | 20:29 | |
kalkin | =begin input is it a Pod::Block::Named or Pod::Block::Code? Rakudo thinks it Code, but reading old code shows that at some point it was a Named | 20:39 | |
20:39
sena_kun left
20:40
rindolf joined
|
|||
kalkin | Currently there is no way to distinguish between code, input & output, when rendering Pod | 20:41 | |
[Coke] | been a while. how to define a sub that you can then call without parens? | ||
20:43
kalkin left,
kalkin joined
|
|||
kalkin | [Coke]: Hmm not sure if i understand. Do I miss some part of the syntax? Where is the difference in parsing between =begin Asd & =begin input? | 20:44 | |
lizmat | :w | 20:46 | |
[Coke] | kalkin: My question was separate. | 20:52 | |
I don't know the answer to your POD question, sorry | |||
20:53
sena_kun joined
20:54
kalkin left,
kalkin joined
20:59
benjif left
|
|||
[Coke] | trying to make a lib that I can run using the REPL where I can do things like THING 1 2 3 and have it be parsed like THING(1,2,3). Any suggestionS? | 20:59 | |
do I need to make a slang? | 21:00 | ||
lizmat | I think so | 21:02 | |
21:02
benjif joined
|
|||
[Coke] | do we have docs on that? | 21:03 | |
don't see anything obvious on the doc site | |||
21:07
kalkin left
21:11
brass left
21:12
brass joined
|
|||
tbrowder | kalkin: i am interested, but i also know the trailing pod declarator grammar is very tricky for my skill level, so i'm reluctant at the moment to take it on. but i'll see after i get my development version working again after all the configuration changes! | 21:15 | |
tellable6 | tbrowder, I'll pass your message to kalkin | ||
21:16
kalkin joined
|
|||
tbrowder | [Coke]: i submitted an issue for someone to give some doc help on making and using a slang. looks like two votes now? or can you add the doc? | 21:17 | |
[Coke] | are you asking me to *write* it? | 21:18 | |
because I don't know how to do it. | |||
tbrowder | if you can, or nudge someone who can | ||
[Coke] | ... I don't know how to do it. if I knew who to nudge, I'd ask them how to do it. | 21:19 | |
Sorry | |||
tbrowder | i think lizmat can. also nine. of course jnthn | 21:22 | |
lizmat | I've always used Slang::Tuxic and Slang::Piersing as examples | ||
and attempts to create one for some P5 related stuff, have failed so far :-( | 21:23 | ||
[Coke] | thank you, I'll look at those modules. | 21:25 | |
yup, that's too complicated for the small thing I'm trying to do. I'll just skip the full REPL and make my own, I think. | 21:26 | ||
but first, more MTGA. | |||
21:27
Scimon left
21:31
mensvaga left
21:41
rindolf left
|
|||
kalkin | p6doc Str returns no such type Str | 21:41 | |
tellable6 | hey kalkin, you have a message: gist.github.com/b1fb18e65a10f5190c...498479dbe3 | ||
kalkin | type Str the same | ||
p6doc type/Str seems also not to work | 21:42 | ||
tbrowder: same here. I looked into Grammar.nqp and it's complicated | |||
tbrowder | but it looks like it's fixed with the current master branch | 21:45 | |
my pod stuff wasn't in 2019.11 | |||
kalkin | tbrowder: yes, the issue for which I did the roast pr, but there are other things too | 21:52 | |
22:07
Kaeipi left
22:08
Kaiepi joined
22:34
AlexDaniel joined,
AlexDaniel left,
AlexDaniel joined
22:39
sena_kun left
22:53
sena_kun joined
|
|||
guifa | <[Coke]>: take a look at the inline SQL library | 23:03 | |
I think itâll work to show you what you want. It returns the result of sql code and defines its syntax as âsqlâ <sql-code> â;â or something or another | 23:04 | ||
23:49
benjif left
|