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