|
🦋 Welcome to the MAIN() IRC channel of the Raku Programming Language (raku.org). Log available at irclogs.raku.org/raku/live.html . If you're a beginner, you can also check out the #raku-beginner channel! Set by lizmat on 6 September 2022. |
|||
|
00:13
jpn joined
00:19
jpn left
00:23
abraxxa-home left
00:49
vrurg_ joined,
vrurg left,
vrurg_ is now known as vrurg
00:51
coleman left
00:52
coleman joined
01:08
jpn joined
01:13
jpn left
01:17
Manifest0 left
02:03
epony joined,
jpn joined
02:08
jpn left
02:33
hulk joined,
kylese left
02:34
_________ left
02:59
jpn joined
03:05
jpn left
03:15
hulk left,
kylese joined
03:52
nil78 joined
03:53
hudo joined
03:56
jpn joined
04:00
jpn left
04:04
DarthGandalf left
04:29
DarthGandalf joined
04:53
jpn joined
05:01
epony left
05:02
epony joined
05:03
jpn left
05:56
_________ joined
06:08
petlib joined
06:09
petlib left
06:13
hudo left
06:19
jpn joined
06:22
gabiruh_ joined
06:23
gabiruh left,
jpn left
06:59
nil78 left
07:02
jpn joined
07:07
jpn left
07:25
abraxxa joined
07:39
abraxxa left
07:40
abraxxa joined
08:21
jpn joined
08:34
Manifest0 joined
08:39
jpn left
08:40
gugod left
08:41
gugod joined
08:59
jpn joined
09:07
jpn left
09:08
jpn joined
09:22
Sgeo left
|
|||
| xinming | !pastebin | 10:28 | |
| Any pastebin recommended? | |||
| l.perl.bot/p/pd97cl <--- In this script | 10:31 | ||
| When I do `raku script.raku test 5` It'll raise error | 10:32 | ||
| Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏test' (indicated by ⏏) in block <unit> at raku-main-to-clarify.raku line 3 | |||
| But it works fine in multi sub calls. | 10:33 | ||
| Xliff | xinming: That's because "test" is not a number | 11:05 | |
| And this is the problem. The coercive multi is used when there is a better option available. | 11:06 | ||
| The 2nd multi is getting chosen, instead of the first. | |||
| And Real() wants to convert "test" to a number. | 11:07 | ||
|
11:13
sena_kun joined
11:16
hudo__ left
|
|||
| librasteve | so I guess Real() [shorthand for Real(Any)] checks for Any at dispatch time and this multi is chosen as Any is less restrictive than the literal Str 'test' [shorthand for Str $ where * ~~ 'test'] ... | 12:22 | |
| anyway, you can see from | 12:28 | ||
| dd $arg; #NumStr.new(15e0, "15e0") | 12:29 | ||
| you are getting a Real anyway since Allomorph NumStr ~~ Real (so no need to use a coercion type) | 12:30 | ||
| it takes a bit of getting used to that raku has all three tools in the box (i) operators just coerce anyway (1 + '2') = 3, (ii) Allomorphs are bridged types that are both Real and Stringy and (iii) there are now (since a year or two) coercion types to ring all the changes in your signatures and declarations. | 12:34 | ||
|
13:10
hudo joined
|
|||
| Xliff | librasteve: But isn't it supposed to move from most -> less restrictive? | 13:22 | |
|
13:44
abraxxa left
|
|||
| librasteve | dang my theory falls to the ground! | 13:45 | |
|
13:46
jpn left,
abraxxa-home joined
|
|||
| so the questions remains why is the Real()coercion type preferred over the Str literal 'test' | 13:46 | ||
| lizmat | the problem is the implicit Any in the Real() coercion | 13:47 | |
| this means that "test" is not immediately disqualified as a value to match the second candidate | |||
| so it tries to coerce the value to a Real, and that fails | 13:48 | ||
| one could argue that that should disqualify the candidate | |||
| and it wouldn't need to coerce, where it not for the "where" clause | 13:49 | ||
| the <= forces the coercion | 13:50 | ||
| Real() $arg where { try 10 <= $_ < 20 } | 13:51 | ||
| fixes that execution error | 13:52 | ||
| and make the script DWIM | |||
| xinming ^^ | |||
| so it's not actually the "And Real() wants to convert "test" to a number.", but the where clause that causes the error | 13:53 | ||
| librasteve | so presumably, the dispatch logic doesn't know if one where clause will beat another, so the first where that matches wins?? | 13:54 | |
| (after getting trapped at the type check) | |||
| lizmat | that is basically the gist, yes | ||
| there is no way to see which "where" clause would be tighter than aother | 13:55 | ||
| librasteve | til | ||
| lizmat | at least, not currently | ||
| librasteve | (good luck with that) | ||
| ;-) | |||
| lizmat | well, you could envision a where block returning some special "Tightness" indicator | 13:56 | |
| librasteve | think I prefer it as first one checked wins | 13:57 | |
| lizmat | and that follows the order of the candidates in source, so you can tweak stuff that way as well | 13:58 | |
| afk& | 14:00 | ||
|
14:06
jpn joined
|
|||
| Xliff | librasteve: Actually, I thought the candidates were sorted by "tightness" and first-one-wins was the law of the land. | 14:55 | |
| librasteve | i guess i am thinking of a case like where 0 < $_ < 10 vs. where 2 < $_ < 8 ... since this has ambiguity coded in (and I can imagine far more convoluted variants with eg runtime variables, iterated values as comparisons) then I am mentally separating the type check as a guard (where you are right, tightness wins) vs. running the where clause and backtracking if the where result is False (where the where clauses | 14:59 | |
| (for the same type) are run in source code order) | |||
|
15:42
Sgeo joined
16:18
epony left
16:20
epony joined
16:37
hudo_ joined
16:43
hvxgr left
16:53
hvxgr joined
17:43
jpn left
17:46
jpn joined
17:55
jpn left
|
|||
| melezhik | o/ | 18:18 | |
| What’s up | 18:19 | ||
| coleman | hello there | 18:29 | |
|
19:07
jpn joined
19:30
Xliff left
|
|||
| jdv | cna zef install stuff in parallel? | 19:33 | |
| *can | |||
| ugexe | It could but CURI holds a lock on install so there isn’t a point | 19:38 | |
| it does fetch and extract in parallel though | |||
| There is —test-degree which defaults to 1 but can be set higher for parallel testing as well | 19:39 | ||
|
19:45
jpn left
20:27
jpn joined
20:48
jpn left
|
|||
| tonyo | is there no longer an issue with the precomp race? | 21:05 | |
|
22:24
kjp left
22:25
japhb_ is now known as japhb
22:26
kjp joined
22:56
abraxxa-home left
23:13
sena_kun left
23:54
hudo_ left
|
|||