🦋 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. |
|||
00:09
hungryd61 left
00:13
hungrydonkey joined
00:39
MilkmanDan left
00:49
JRaspass left,
cpan-raku left
00:50
cpan-raku joined,
cpan-raku left,
cpan-raku joined
00:51
sena_kun joined
00:53
Altai-man left
01:09
Tirifto left
01:11
MilkmanDan joined
01:27
MilkmanDan left
02:00
MilkmanDan joined
02:34
Cabanossi left
02:43
Cabanossi joined
02:47
MilkmanDan left
02:49
MilkmanDan joined
02:55
sena_kun left
|
|||
Geth | advent: 47c574da12 | (Vadim Belman)++ | 20th/articles/rfc265.md Add RFC 265 |
02:56 | |
vrurg | .seen jmerelo | 02:57 | |
tellable6 | vrurg, I saw jmerelo 2020-08-16T17:00:18Z in #raku: <JJMerelo> lizmat I think I'm going to disable that. It never works... | ||
03:25
ensamvarg left,
ensamvarg joined
03:26
DarthGandalf left
03:27
unclechu left,
AlexDaniel` left,
DarthGandalf joined
03:28
MasterDuke left,
matiaslina left
03:29
CIAvash left,
Nasrudin left
03:30
dataangel left
03:31
mowotter joined
03:33
CIAvash joined,
mowcat left
03:38
cusion joined
03:40
AlexDaniel` joined,
unclechu joined,
matiaslina joined,
Nasrudin joined,
mowotter left
03:44
cusion left
03:59
xinming left
04:01
xinming joined
04:44
Black_Ribbon left
04:45
Black_Ribbon joined
04:48
rockxloose left,
xelxebar left,
tejr left
04:51
xelxebar joined,
rockxloose joined
04:53
tejr joined
04:57
hungrydonkey left
04:58
hungrydonkey joined
05:33
sjm_uk left
05:45
cpan-raku left
05:46
cpan-raku joined,
cpan-raku left,
cpan-raku joined,
bocaneri joined
05:48
bocaneri is now known as Sauvin
05:51
hungryd16 joined,
hungrydonkey left
05:55
sjm_uk joined
05:59
xelxebar left,
tejr left,
rockxloose left,
terminatorul left
06:03
xelxebar joined
06:05
tejr joined,
rockxloose joined
06:06
dolmen joined
06:12
rindolf joined,
skids left
06:32
hungryd16 left,
hungrydonkey joined
06:34
hungrydonkey left,
hungryd6 joined
06:47
dolmen left,
MasterDuke joined
06:53
stoned75 joined
06:59
patrickb joined
|
|||
Geth | ecosystem/master: 4 commits pushed by (Jack Kuan)++, (Juan Julián Merelo Guervós)++
|
07:13 | |
07:22
Sgeo left
07:33
jdv79 left,
jdv79 joined
07:34
hungrydonkey joined,
hungryd6 left
|
|||
andrzejku | Hello | 07:38 | |
07:49
dakkar joined
07:56
leont joined
08:07
MasterDuke left
|
|||
SmokeMachine | m: say "a b c\td e f\ng h i".words | 08:11 | |
camelia | (a b c d e f g h i) | ||
08:12
AlexDaniel` left,
unclechu left,
CIAvash left,
matiaslina left,
Nasrudin left
08:18
CIAvash joined
08:20
sno left
08:22
patrickb left
08:25
unclechu joined,
AlexDaniel` joined,
matiaslina joined,
Nasrudin joined
08:32
finanalyst joined
08:35
sena_kun joined
08:51
Altai-man joined
08:52
sno joined
08:54
sena_kun left
|
|||
SmokeMachine | is there a way of finding the attributes a method uses on its body? | 09:00 | |
or only with RakuAST? | 09:01 | ||
andrzejku | do you think if Perl7 come it will eliminate Raku? | 09:24 | |
tadzik | nah | 09:27 | |
not enough cool stuff in it :P | |||
moritz | perl7 still needs to solve all the problems that perl 5 has | 09:36 | |
[ptc] agrees with tadzik | 09:37 | ||
moritz | too easy to mix binary data and text; no good concurrency story; no function signatures; weak built-in OO etc. | 09:38 | |
09:45
mniip left
09:58
Black_Ribbon left
10:58
benchable6 left,
quotable6 left,
greppable6 left,
coverable6 left,
statisfiable6 left,
reportable6 left,
releasable6 left,
bloatable6 left,
unicodable6 left,
bisectable6 left,
linkable6 left,
squashable6 left,
committable6 left,
shareable6 left,
tellable6 left,
sourceable6 left,
evalable6 left,
nativecallable6 left,
notable6 left,
releasable6 joined
10:59
coverable6 joined,
sourceable6 joined,
bisectable6 joined,
benchable6 joined,
greppable6 joined,
quotable6 joined
11:00
unicodable6 joined,
statisfiable6 joined,
tellable6 joined,
linkable6 joined
11:01
committable6 joined,
nativecallable6 joined,
squashable6 joined,
evalable6 joined,
notable6 joined,
bloatable6 joined,
reportable6 joined,
shareable6 joined
11:14
sno left
11:24
AlexDaniel left
11:25
mniip joined
11:34
finanalyst left
11:37
stoned75 left
11:43
sno joined
11:56
justsomeguy joined
12:04
stoned75 joined
12:05
finanalyst joined
12:13
justsomeguy left
12:22
hungrydonkey left,
hungrydonkey joined
|
|||
[Coke] | is there a way in comma to check for a newer version? | 12:44 | |
Altai-man | [Coke], you mean plugin or standalone? | 12:46 | |
[Coke] | the "complete" edition | ||
"comma CP" | 12:47 | ||
Altai-man | Well, there is complete edition as a plugin for other jetbrains IDE and as an standalone IDE. | ||
[Coke] | standalone | ||
Altai-man | But anyway, for the plugin I don't think there are ropes at all for it, and standalone Comma warns you there is a new version, or at least it should, yes. | 12:48 | |
[Coke] | ah, check is always on? ok. | ||
12:48
pmurias joined
|
|||
[Coke] wonders if it is worth fighting to see if cro works on mac yet. :| | 12:48 | ||
Altai-man | Yeah. | ||
pmurias | andrzejku: Perl doing great would be awesome for Raku | 12:49 | |
Altai-man | Well, no idea about cro. :S | ||
pmurias | andrzejku: it's not very likely that it's possible to incrementally evolve Perl (the language) into something as cool as Raku | 12:51 | |
moritz | and the real question is, IMHO: since Perl 7 wants to be backwards incompatible with Perl 5, will there be a fork, and Perl 5 continued to be maintained? | 12:52 | |
12:52
sena_kun joined
|
|||
moritz | if so: I'd like to suggest that Perl 7 gets a new name, ideally not starting with "Perl" :-) | 12:52 | |
been there, done that | |||
pmurias | moritz: talked with mst (on #perl) and he was hoping the backward incompatibility will be stopped | 12:53 | |
12:53
Altai-man left
|
|||
pmurias | anyway aren't major versions supposed to be a bit incompatible nowadays? | 12:54 | |
moritz | yes, and everybody struggles with that | ||
[Coke] | I am definitely interested to see how the p5 community deals with these questions 20 years after the last time we tried this. | 12:55 | |
moritz | there were reports in October of 2018 that 62% of websites on the Internet were still using PHP5, even though it was scheduled to EOL at end of 2018 | 12:56 | |
12:56
angelds joined
|
|||
[Coke] | I suspect they have an idea of certain things to avoid. | 12:56 | |
moritz | hard to find more up-to-date numbers, but it seems that php5 -> php7 wasn't such a huge success in terms of adoption | ||
python2 -> python3 ... do I need to say more? | |||
codesections | I really like Rust's "edition" approach (which actually shares a fair bit with how we use `use` with our letter versions) | ||
pmurias | moritz: aren't a lot of website unmaintained tho? | 12:57 | |
codesections | namely, that Rust keeps binary compatibility but can have backwards-incompatable syntax changes | 12:58 | |
moritz | pmurias: that's part of the problem | ||
[Coke] | read an article about the 5/7 switch where the author was concerned that if there wasn't a 'use v7' required, there would be problems with users trying to run 7 code in a 5 and getting unexpected results, which certainly sounded familiar. | 12:59 | |
codesections | (which doesn't let you change *everything* but lets you change a lot. It's basically what we'd have had if the plans to have a p5 mode had panned out) | ||
12:59
epony left
13:00
zacts joined
|
|||
codesections | coke: Yeah, I kind of think Racket had the right idea, by requiring all programs to start with `#lang Racket`. They can *always* change that | 13:00 | |
s/coke/[Coke]/ | |||
13:00
epony joined
|
|||
[Coke] | I'm only [Coke] because someone took coke - no worries. :) | 13:01 | |
moritz | codesections: LOLCODE does even better, all programs start with "HAI 1.2" or so and such declare their version number | ||
language version number, even | |||
13:02
zacts left
|
|||
codesections | moritz: Somehow, I feel like we'd have better luck with the pitch "we should all learn from Racket" than with "we should all learn from LOLCODE" :D | 13:02 | |
moritz | en.wikipedia.org/wiki/LOLCODE#Example_2 these examples always make me chuckle, and remind me of pmichaud++'s awesome talk where he gave rakudo (then perl6 on parrot) a LOLCODE backend :D | 13:03 | |
codesections | For some reason, it reminds me of emojicode (which, now that I think about it, would be pretty trivial to implement in Raku) www.emojicode.org/ | 13:04 | |
[Coke] | the lolcode looks really familiar and I wonder if I have commits in that repo | 13:06 | |
13:07
angelds left
|
|||
codesections | moritz: I'm legitimately jealous of the error handling in the Example 2 you linked. Handling errors like that (instead of with exceptions) is probably the biggest thing I miss when writing Raku | 13:08 | |
moritz | time for LOLRAKU! :D | 13:10 | |
moritz is a bit jealous of python's "with" contextualizer | 13:11 | ||
tadzik | I wouldn't be surprised if Damian has already implemented it as a vim plugin or something :P | ||
codesections | LOLRAKU - slogan: «-o LOLs» | 13:12 | |
pmurias | tadzik: how are think with Warsaw.pm? | ||
moritz likes it | |||
tadzik | pmurias: ded | ||
not just because of the pandemic either | |||
codesections | tadzik: I don't understand how he can spend all day writing Raku and still find the inner willpower to drop back to Vimscript. Now *there's* a tough language to love! | 13:13 | |
pmurias | the pandemic doesn't seem to be going anywhere soon :( | ||
pmurias would attend a meeting but doesn't do anything Perl/Raku related anymore | 13:16 | ||
tadzik | I don't do much either. I think most Warsaw.pm member's don't | 13:18 | |
13:18
raku-bridge left,
raku-bridge joined,
raku-bridge left,
raku-bridge joined
|
|||
jdv79 | NY.pm has fizzled as well | 13:19 | |
i think the last time we had regular meetings might have been 3 or 4 years ago | 13:20 | ||
pmurias | tadzik: this likely doesn't help the groups existence :( | 13:23 | |
tadzik | pmurias: indeed:( | ||
[Coke] | Albany.pm is long gone. :| | 13:24 | |
codesections | Have any of y'all gone to that SF online meetup? | 13:28 | |
13:28
pmurias left
|
|||
moritz has been to some Germany.pm meetings | 13:29 | ||
13:49
finanalyst left
14:12
sarna joined
|
|||
sarna | hey, I want all the arguments to MAIN to be required - is there an easy way for that? | 14:13 | |
apart from a chain of `unless $foo.defined` | |||
codesections | ! | 14:15 | |
jdv79 | how does one exclaim nothing... | ||
codesections | m: sub f(:$named!) { say $named }; f | ||
camelia | Required named parameter 'named' not passed in sub f at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
codesections | sarna ^^^ | 14:16 | |
jdv79 | sarna: look at signatures and stuff in the docs? | ||
sarna | codesections: thanks! | ||
jdv79: I searched for "required", nothing came up :( | |||
jdv79 | hmm, i guess it doesn't surface well - docs.raku.org/type/Signature#Optio..._arguments | 14:18 | |
sarna | should've searched for "mandatory" :v | 14:20 | |
codesections | :) | 14:22 | |
14:35
AlexDaniel joined,
AlexDaniel left,
AlexDaniel joined
14:38
sarna left
14:40
lustlife joined,
lustlife left
15:04
MilkmanDan left,
MilkmanDan joined
15:15
Sgeo joined
|
|||
codesections | This confuses me: | 15:19 | |
m: { POST { when ?True { False }}; 'foo'} | |||
camelia | WARNINGS for <tmp>: Useless use of constant string "foo" in sink context (line 1) |
||
codesections | m: say { POST { when ?True { False }}; 'foo'} | ||
camelia | -> ;; $_? is raw = OUTER::<$_> { #`(Block|62789032) ... } | ||
codesections | grr | ||
m: say { POST { when ?True { False }}; 'foo'}() | |||
camelia | foo | ||
15:20
skids joined
|
|||
codesections | Why doesn't ^^^^ error? The POST condition is violated. Does `when` just not work with POST? Removing the (always true) `when` gets the error I wanted | 15:20 | |
m: say { POST { False }; 'foo'}() | 15:21 | ||
camelia | Postcondition '{ False }' failed in block at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
15:38
finanalyst joined
15:55
terminatorul joined
15:56
MasterDuke joined
|
|||
tobs | m: say do { POST { say "«$_»" }; 'foo' } | 15:56 | |
camelia | «foo» foo |
||
terminatorul | Hello | ||
tobs | m: say do { POST { when "foo" { say "yay" } default { say "nay" } }; 'foo' } | 15:57 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Strange text after block (missing semicolon or comma?) at <tmp>:1 ------> 3say do { POST { when "foo" { say "yay" }7⏏5 default { say "nay" } }; 'foo' } |
||
tobs | m: say do { POST { when "foo" { say "yay" }; default { say "nay" } }; 'foo' } | ||
camelia | yay foo |
||
tobs | it seems that when works as intended | ||
codesections | tobs: I think I actually figured that issue out, sort of: the `when` blocks in POST work as I expected, but only if you add an extra `{}` | 15:58 | |
tobs | I'd say your use of `when $bool-literal` doesn't do what you think | ||
codesections | No, that's not it. Look: | ||
m: say do { POST { when "foo" { say "yay"; False }; default { say "nay" } }; 'foo' } | 15:59 | ||
camelia | yay foo |
||
codesections | See, even though «yay» prints, the POST condition doesn't fail | 16:00 | |
m: say do { POST {{ when "foo" { say "yay"; False }; default { say "nay" } }}; 'foo' } | |||
camelia | yay Postcondition '{{ when "foo" { say "yay"; False }; default { say "nay" } }}' failed in block at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
codesections | But, with the extra block inside the POST, it works | 16:01 | |
Which I *think* is a bug (POST not treating itself as a block for when purposes). Do you agree? | |||
tobs | grmbl, it's certainly not nice. Normally a when block returns its last expression but something else (yes, probably POST) fails to pass that on. | 16:04 | |
I say as a complete layman | |||
terminatorul | Is there a way for me to `use SQL-Linux` on Linux, and `use SQL-Windows` on Windows (and `SQL-Mac` on Mac), in the same file ? And end up using the same symbols, but from the right module ? | 16:08 | |
tobs | codesections: do you know `rakudo --target=ast`? If you want to get exposed to some internals and have some time to decipher the output, you could take a look at that. | 16:09 | |
terminatorul: the runtime version of `use` is called `require`. Determine the module name at runtime and then require the correct one. See docs.raku.org/language/modules#require | 16:12 | ||
16:14
gnufr33dom left
|
|||
tobs | except I don't know how to do the importing of symbols that use does, after require | 16:16 | |
vrurg | terminatorul: there is a module on modules.raku.org. Named 'if' or something like this. | 16:25 | |
Yep, it's 'if': github.com/FROGGS/p6-if | 16:26 | ||
tobs: The right implementation of system dependency should use a proxy-module. In this case one doesn't need to import symbols, it'd be ok to re-export them from, say, sub EXPORT. | 16:27 | ||
Just don't forget to return a Map instance from EXPORT, not a Hash. | 16:28 | ||
16:36
dakkar left
16:40
stoned75 left
16:42
stoned75 joined
16:46
melezhik joined
|
|||
melezhik | .tell dwarring: I've added "patch" for LibXSLT - github.com/melezhik/RakuDist/commi...b8c95cb192 , now it successfully tests on RakuDist - rakudist.raku.org/sparky/report/debian/655 | 16:48 | |
tellable6 | melezhik, I'll pass your message to dwarring | ||
melezhik | I am not sure if dwarring: is in raku/irc, but just noticed that someone tried to test LibXSLT on RkDist, so I assume it could be him :-))) | 16:49 | |
16:51
Altai-man joined
16:53
sena_kun left
17:14
Noisytoot joined
|
|||
terminatorul | Thank you guys ! Can I find more about the proxy-module use ? | 17:16 | |
17:23
stoned75 left
17:27
stoned75 joined
|
|||
vrurg | terminatorul: proxy module is my term for a module which acts as a proxy for other modules. I.e. in your case it'd be SQL which would then load SQL::Linux or SQL::Windows and re-export their symbols. | 17:31 | |
terminatorul | Is there no way to have the specific module resolved at compile time please ? | 17:32 | |
vrurg | greppable6: sub EXPORT | ||
greppable6 | vrurg, 94 lines, 72 modules: gist.github.com/bec056f337ac012c65...d096f88036 | ||
vrurg | terminatorul: see link to 'if' module above. | 17:33 | |
SmokeMachine | m: role R[::T] is T {}; R[Int] # should this work? | 17:37 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> T does not support inheritance, so R cannot inherit from it at <tmp>:1 |
||
17:52
Black_Ribbon joined
18:05
melezhik left
18:09
MilkmanDan left,
MilkmanDan joined
|
|||
Geth | ecosystem: fooist++ created pull request #526: remove duplicate from META.list |
18:12 | |
18:22
Sauvin left
|
|||
codesections | m: constant $a = constant $b = 42; say $a; say $b; | 18:34 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable '$b' is not declared at <tmp>:1 ------> 3tant $a = constant $b = 42; say $a; say 7⏏5$b; |
||
codesections | apparently chained assignment doesn't work with constants ^^^^ :( | 18:35 | |
(Not a big deal, but a slight inconsistency/paper cut) | |||
18:44
guifa` joined
19:02
ChoppedBacon left
19:09
ChoppedBacon joined
|
|||
guifa` | codesections: did my answer on SO make sense? | 19:29 | |
19:31
MilkmanDan left
|
|||
codesections | guifa`: I _think_ so (and I just marked it as accepted) | 19:31 | |
I'd like to come back to it when I understand the internals a bit more/we have RakuAST | |||
you said: «If your conditions are complex things like .is-prime and * %% 2, or even non-deterministic (smartmatching against a mutable object), it will either be difficult or impossible to know for sure.» | 19:32 | ||
I don't _think_ that's right – or, at least, it seems like almost anything is Any | |||
so the compiler could give up and make you handle all of Any | |||
(in practice, that would mean requiring a `default {...}` case | 19:33 | ||
) | |||
guifa` | What I mean is if the comparison value is subject to change | 19:37 | |
perhaps | |||
when Foo.status { ... } | |||
I can't imagine why you would do it in that way, but if you do, the .status will vary | |||
And might be different each time the given block is run | 19:38 | ||
codesections | but the point of checking for exhaustive matching is that you've handled all possible values allowed by the return type constraint on Foo.status | ||
(which, if not specified would be Any) | 19:39 | ||
guifa` | Unless it returns a Mu ;-) | ||
codesections | well, fine :) but a `default` case would still handle that – it would just force you to have one, with the compiler there to remind you | 19:40 | |
(and, when you *have* constrained the return type of Foo.status, exhaustive pattern matching could be much more useful | 19:41 | ||
guifa` | I'd just use a default { die "WTF code needs fix kthxbye" } and save myself the trouble personally ;-) | ||
guifa` actually uses that in one of his parses lol | |||
codesections | Like, maybe Foo.status returns a subset of Int that corrisponds to HTTP status codes that your code handles | 19:42 | |
19:42
sjm_uk left
|
|||
codesections | If you add a new code to the subset, you have to remember to add it to the given/when construct | 19:42 | |
guifa` | You could probably create a special when clause, and feed it some type of information about what to expect | 19:43 | |
codesections | and, if you forget and the status code is rare, you can end up with "WTF code needs fix kthxbye" errors in production :) | ||
Yeah, that's kind of what I was thinking re: RakuAST. Or maybe it'd be a special type of `given` block? | 19:44 | ||
guifa` | err yeah, I meant givne block | ||
so maybe | |||
given-all $value, $range-description { … } | |||
codesections | Hmm, I still think it'd be possible to do without the $range-description | 19:45 | |
and just have it be based on $value.WHAT | 19:46 | ||
guifa` | You'd want the range to describe needing all positive ints, all reals, etc. Subsets aren't very introspectable | 19:48 | |
codesections | «Subsets aren't very introspectable» is that a forever thing, or a NYI thing? | 19:49 | |
guifa` | Subset constraints can include code of arbitrary complexity so... inasmuch as code can be introspected :-) | 19:52 | |
consider subset Positive of Int where * > 0 | 19:53 | ||
There's (a) currently no way (that I know) to grab the constraint (beyond being an Int), but (b) if you could, it's a WhateverCode, so you'd need to pull that through, piece together how it works and… complicated lol | 19:55 | ||
codesections | Perhaps I am under-thinking this (or ignoring huge performance issues), but why couldn't you just store the constraint as a string? | 19:57 | |
guifa` | I mean you could | ||
But what if the constraint is | |||
where { $^i > 0 && $^i mod 8 < 4 && ($^i ** 3 - 1).is-prime } | 19:58 | ||
codesections | :m subset Ugly where { $^i > 0 && $^i mod 8 < 4 && ($^i ** 3 - 1).is-prime }; my Ugly $a = -1 | 20:00 | |
m: subset Ugly where { $^i > 0 && $^i mod 8 < 4 && ($^i ** 3 - 1).is-prime }; my Ugly $a = -1 | |||
camelia | Type check failed in assignment to $a; expected Ugly but got Int (-1) in block <unit> at <tmp> line 1 |
||
codesections | I'd rather that message be «Type check failed in assignment to $a; expected an Ugly where { $^i > 0 && $^i mod 8 < 4 && ($^i ** 3 - 1).is-prime } but got an Int (-1) | 20:01 | |
» | |||
20:01
stoned75 left
|
|||
guifa` | Now *that* is one thing that where the error is LTA | 20:01 | |
codesections | The current one, or the one I suggested :D | 20:02 | |
guifa` | The current error message | ||
codesections | Yeah, that's all I meant by storing it as a string – which I know is just a minimum level of introspectability, but at least is something | 20:03 | |
20:08
Cabanossi left
20:13
stoned75 joined
20:15
Cabanossi joined
20:19
MilkmanDan joined
20:38
reach_satori_ left
|
|||
rir | Anything recommendedfor raku tidying, raku coverage, or counting lines of raku? | 20:47 | |
codesections | I recall that there's a convention for declaring a multi with Bool flag that changes its behavior, but I can't find a concise way to declare it | ||
something where the callsite usage is, e.g., `greet('tom') # OUTPUT «Hi, Tom»` and `greet('tom', :loud) # OUTPUT: «HI TOM!»` | 20:49 | ||
MasterDuke | rir: there's the MVM_COVERAGE_LOG=foo.log env variable to get a coverage report. there's modules.raku.org/dist/Perl6::Tidy:cpan:JGOFF for tidying, but i've never used it | ||
20:50
finanalyst left
|
|||
codesections | But the only way that's occurring to me to declare that is with a signature like `multi greet($name, Bool :$loud where .so) {...}`, which seems far more verbose than what I recall seeing. What's the cleaner way to do it? | 20:50 | |
rir: I'm not familiar with anything, though I've also been currious | 20:51 | ||
20:52
rindolf left,
sena_kun joined
20:53
MilkmanDan left,
Altai-man left
|
|||
rir | MasterDuke: Thanks, MVM_COVERAGE_LOG sounds promising. I got no joy from Perl6::Tidy. Or Perl6::Parser which seems, by docs, a precursor to a tidier. | 20:55 | |
codesections ^ | |||
MasterDuke | rir: iirc, you want to do something like foo.%d.log so multiple processes don't stomp all over each other. maybe it's %p? and Perl6::(Tidy|Parser) have suffered from the loss of drforr, but hopefully somebody can step up and adopt them | 20:57 | |
21:01
stoned75 left
|
|||
tobs | codesections: maybe you saw `multi sub greet($name, :$loud!) { … }` but this candidate triggers when a loud named argument is mentioned, even if you pass `named => False`. The where clause using *.so is the only option I know at least. | 21:02 | |
*`loud => False` | |||
21:03
terminatorul left
|
|||
codesections | rir: re: counting lines of Raku – the two lines-of-code counters I tend to use (tokei and loccount) both count Raku lines of code but – frustratingly - neither detect Raku properly based on file extension. It'd be an easy PR for either project, though | 21:04 | |
tobs: Thanks, I bet that was what I saw | 21:05 | ||
guifa` | You could probably avoid the Bool bit by just doing :$loud! where True | ||
tobs | I suppose a `subset Adverb of Bool where *.so; sub greet ($name, Adverb :$loud) { … }` could make it less noisy | 21:06 | |
guifa` | tobs++ | ||
Re coverage: Comma has some coverage support for tests I believe, but I haven't used it yet | |||
codesections | guifa`: and it couldn't be `where True` because smartmatching | ||
21:07
kensanata joined
|
|||
guifa` | I forgot about Boolean smartmatching being a bit unintuitive | 21:07 | |
tobs | and if the subset is called Adverb it should be :$loudly, of course :) | ||
codesections | yeah, but at least the errors are clear | ||
tobs++ | |||
21:08
MilkmanDan joined
|
|||
rir | codesections: Thanks. I will check those out. 2 out of 3--line counter and coverage logger. Great! | 21:10 | |
codesections | tobs: guifa: Oooh, I know, I'll just add `Bool % where *.values.so` as a constraint to the proto signature, and then be able to use :$loud! or similar in the multis | 21:12 | |
(that'll break if I add other named parameters, but that's fine) | 21:13 | ||
21:18
Mawile joined
21:22
squashable6 left,
squashable6 joined
21:26
guifa` left
|
|||
rir | guifa`: Thanks, I'll look at Comma. I've been mired in 'too much to learn' and forgot all about it. | 21:26 | |
tellable6 | rir, I'll pass your message to guifa` | ||
21:27
Mawile is now known as Archenoth
21:31
finanalyst joined
22:02
finanalyst left
22:03
kensanata left
22:23
mowcat joined
|
|||
codesections | m: role A[::T] {has T $.a; method a(-->T) {$!a}}; A[Int].new(a => 1).a | 22:42 | |
camelia | Type check failed for return value; expected T but got Int (1) in method a at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
codesections | Why does ^^^ die? | ||
22:42
zostay left,
kawaii left
22:43
mithaldu_ left,
peteretep left,
Grinnz left,
spycrab0 left
|
|||
codesections | It looks like it's declaring the attribute $a to be of type T, and then asking for it back and guarenteeing that it's still of type T. But it's not a T anymore, somehow? | 22:43 | |
I think it's being wrapped in a Scalar, but I'm not sure why/how – and, oddly, adding `<>` to the method doesn't seem to help | 22:44 | ||
This adds to my confusion here: | 22:47 | ||
m: role A[::T] {has T $.a; method a() {dd $!a.VAR.WHAT; $!a}}; dd A[Int].new(a => 1).a.VAR.WHAT | |||
camelia | Scalar Int |
||
22:48
spycrab0 joined
|
|||
codesections | It looks like $!a is a Scalar right _before_ it's returned, a Scalar _when_ it's returned (which is what caused the error before), but an Int as soon as it has been returned. | 22:48 | |
Is there some sort of auto-scalarization/de-scalarization going on here that I don't know about? | |||
22:51
Grinnz joined,
peteretep joined
22:54
mithaldu_ joined,
kawaii joined
|
|||
codesections | Oh, wait, I just read camelia's error message and now I understand (in partial defense, I get a different msg in my local REPL). | 22:56 | |
22:56
zostay joined
|
|||
codesections | It's just that the T := Int binding doesn't last long enough for the return value check. I get it. | 22:56 | |
22:59
epony left
23:03
epony joined
23:12
aborazmeh joined,
aborazmeh left,
aborazmeh joined
23:14
MilkmanDan left
23:16
MilkmanDan joined
23:18
squashable6 left
23:19
squashable6 joined,
squashable6 left
23:21
squashable6 joined
23:22
MilkmanDan left
|
|||
[Coke] | m: role A[::T] {has T $.a; method a(-->T) {$!a}}; A[Rat].new(a => 1).a | 23:27 | |
camelia | Type check failed in assignment to $!a; expected Rat but got Int (1) in block <unit> at <tmp> line 1 |
||
23:30
MasterDuke left
23:35
MilkmanDan joined
|
|||
codesections | m: role A[::T] {has T $.a; method a(-->T) {$!a}}; A[Rat].new(a => 1/1).a | 23:56 | |
camelia | Type check failed for return value; expected T but got Rat (1.0) in method a at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
codesections | (related: Why do I get the much less helpful error msg «Died with X::TypeCheck::Return» when I run that code locally? Odd) | 23:57 |