09:15
TempIRCLogger joined
|
|||
Nemokosch | Hm, interesting, I'm gonna look this up | 09:16 | |
I think the agreeable behavior is much more the first one | |||
> which means that when calling @u.push on it, it should be any(@u.push(5), @u.push(6)) | 09:30 | ||
where is this written down? | |||
lakmatiol | well, `multi method push(Array:D: \value --> Array:D)` is the candidate that gets called, and `Any \value` cannot take Mu or Junction, so the call should get threaded through the junction. | 09:57 | |
> Junctions are very special objects. They fall outside the Any hierarchy, being only, as any other object, subclasses of Mu. That enables a feature for most methods: autothreading. Autothreading happens when a junction is bound to a parameter of a code object that doesn't accept values of type Junction. Instead of producing an error, the signature binding is repeated for each value of the junction. | |||
from docs.raku.org/type/Junction | 09:58 | ||
Nemokosch | I see it nowhere written that the supposed behavior for arrays would be to put all elements one after the other | 11:11 | |
That's not even concurrency aware | |||
[3]|[6] would at least make sense | 11:12 | ||
Although that's arguably more an issue with using push in the first place which mutates an object 🤔 | 11:14 | ||
lakmatiol | yeah, its probably not meant to work with mutable objects | 11:59 | |
nevertheless, it does mean that the push signature in the docs is wrong | |||
since a method with that signature should thread through the junction | |||
19:45
justsomeguy joined
23:08
justsomeguy left
|