02:02
m_athias left,
m_athias joined
02:19
frost joined
03:30
Guest35 left
05:16
Util left,
Util joined
05:34
zacts joined,
zacts left
|
|||
deadmarshal | paste.c-net.org/NachosBeijing | 06:09 | |
07:13
dakkar joined
09:35
Manifest0 left
09:40
frost left
09:41
Manifest0 joined
09:45
frost joined
10:25
wingfold joined
10:36
zacts joined
11:58
zacts left
12:06
frost left
13:12
frost joined
13:28
zacts joined
|
|||
Nemokosch | where do IO::Path objects get their :CWD parameter from? | 13:31 | |
because apparently not from $*CWD... | |||
13:31
Guest35 joined
|
|||
or wait, how many $*CWD's are there? | 13:41 | ||
14:02
frost left
|
|||
Nahita | @deadmarshal: you need to use `for` rather than `while` there | 14:55 | |
also, then it should become `for ^@arr.elems` because otherwise it's like you literally only iterate over the 1-element list `[@arr.elems,]`. | 14:56 | ||
But better yet, you can use `.kv` to get both index ($i) and the value (@arr[$i]) at the same time | 14:57 | ||
i.e., `for @arr.kv -> $i, $val` | |||
(and due to `while`, whose loop is executed as long as its condition (@arr.elems in your case) is Truthful. Since array is nonempty, it'll forever loop therefore.) | 14:58 | ||
With the change, I get 3 as the output but I'm not sure if it is desired because i don't really understand what equilibrium-index is supposed to be :d | 15:00 | ||
15:00
guifa left
|
|||
deadmarshal | thanks it works. I realy don't yet understand how arrays,lists, or sequences are passed to functions in Raku. I'm used to Perl's @_ :D | 15:02 | |
Nahita | yw, yeah I have similar concerns :d | 15:14 | |
the other day I stumbled upon this: `sub fun(List) {}; fun 2...8;` | |||
it gives: `Internal error: inconsistent bind result`! | 15:15 | ||
I think that's what they call a "Less Than Awesome" error | |||
but I guess that's because a sequence is not a list | 15:16 | ||
still, `sub fun(List) {}; fun 7;` tells me this: | 15:18 | ||
``` | |||
===SORRY!=== Error while compiling: | |||
Calling fun(Int) will never work with declared signature (List) | |||
``` | |||
lizmat | 7 is not a list | 15:22 | |
7, *is* | |||
m: sub fun(List) {}; fun 7,; | |||
camelia | ===SORRY!=== Error while compiling <tmp> Calling fun(Int) will never work with declared signature (List) at <tmp>:1 ------> sub fun(List) {}; āfun 7,; |
||
lizmat | m: sub fun(List) {}; fun 7, | 15:23 | |
camelia | ===SORRY!=== Error while compiling <tmp> Calling fun(Int) will never work with declared signature (List) at <tmp>:1 ------> sub fun(List) {}; āfun 7, |
||
lizmat | hmmm | ||
m: sub fun(List) {}; fun (7,) | |||
camelia | ( no output ) | ||
lizmat | m: sub fun(List) {}; fun( 7,) | ||
camelia | ===SORRY!=== Error while compiling <tmp> Calling fun(Int) will never work with declared signature (List) at <tmp>:1 ------> sub fun(List) {}; āfun( 7,) |
||
Nahita | yes; I gave that as an example to show the differences in the error messages :d | 15:25 | |
to the signature `List`, passing a Sequence vs passing an Int, seeing them both fail, but with different error messages | 15:26 | ||
also one in compile time, one in run time I guess | |||
m: sub fun(List) {}; fun 2...8; | |||
sub fun(List) {}; fun 7 | 15:27 | ||
m: sub fun(List) {}; fun 7 | |||
lizmat | you ask the sub to accept a List, yet you give it an Int? | 15:28 | |
15:28
MasterDuke left
|
|||
Nahita | thanks, yes; I gave that as an example to show the differences in the error messages :d | 15:28 | |
yes I realize that's an error | |||
and the error is very explanatory | |||
but then I try passing a Sequence and... | |||
it said "Internal error: inconsistent bind result" | 15:29 | ||
lizmat | that is an interesting one :-) | 15:30 | |
m: dd List ~~ Seq | 15:31 | ||
camelia | Bool::False | ||
lizmat | which leads me to think it should actually be a compile time error | ||
please make an issue for this: this is going wrong in the binder somewhere | 15:35 | ||
Nahita | okay I did, thanks for your interest | 15:51 | |
16:03
dakkar left
16:09
zacts left
|
|||
deadmarshal | why does Raku needs this many list container thingies anyways? Perl only has an array and it's fine. I can understand that seq is for lazy list so it's needed. but why having List? because it's difference with Array is immutability. which could be also done with array with a modifier or something | 16:42 | |
no need for a separate class :/ | |||
also multi keyword. why does it exist? aren't functions signatures enough to make out which one to call by the compiler? | 16:43 | ||
seems reduntant | |||
16:58
razetime joined
|
|||
Util | deadmarshal: Not redundant, because each has important use cases. | 17:06 | |
List vs Array are Immutable and Mutable. We have I&M versions of lots of things, like Set & SetHash. Immutability is important in Functional Programming (FP), which is a style/paradigm that Raku needed to support better than Perl did. Mutability needs to remain a clear option, otherwise you *only* can do FP. | |||
Seq is (mostly) a List that you can iterate (receive one element at a time), but cannot "rewind" to a prior index. *Very* efficient, and Seq is the natural output of FP things like map() and grep(). | |||
A Seq can become an Array simply by binding/assignment. | |||
stevied | "Please note that a non-multi sub or operator will hide multi candidates of the same name in any parent scope or child scope. The same is true for imported non-multi candidates." | 17:10 | |
from: docs.raku.org/syntax/multi | |||
so they are treated differently dependent upon whether they have "multi" in front of them | |||
17:12
razetime left
|
|||
docs.raku.org/syntax/multi#only | 17:12 | ||
Util | The `multi` in `multi sub` and `multi method` *could* have been inferred. There may have been internal performance reasons. | 17:13 | |
From the human programmer, the current design helps catch errors and provide cues to a reader to expect multiple versions of the routine they are reading. | |||
`multi sub` can be shortened to just `multi`, for a better fit when your code design is mostly multis. | |||
stevied | all subs have an implicit "only" in front of them unless otherwise specified | 17:14 | |
Util | Oh, stevied#8273++ ; I missed that bit completely while typing | ||
stevied | i have a hunch that they set it up so you can create a sub on the fly that overrides an existing multi | 17:16 | |
that's just a guess | |||
or it could just be an aid to the developer so they don't accidentally give a sub the same name when they didn't mean to | 17:18 | ||
so maybe multi is a way of telling the compiler, "yes, I really want to do this" | 17:20 | ||
deadmarshal | great thanks | 18:02 | |
18:06
discord-raku-bot left,
discord-raku-bot joined
18:17
wingfold left
18:48
MasterDuke joined
19:23
ajr joined
19:37
n1to joined
20:27
ajr left
21:19
ajr joined
21:25
ajr left
21:54
ajr joined
21:58
ajr left
22:00
Manifest0 left
22:02
ajr joined,
n1to left
|
|||
gfldex | deadmarshal: The difference between sub and multi sub comes into play when you write modules. When I use your module that exports an only sub, I know that I wont have to deal with a multi and can assume a stable interface. A multi is by design a flexible interface. Both are fine, but I need to know the difference. There is also performance. A only sub is easier to inline. | 22:44 |