> > @fib[1, 5, 10..15, 20]
> (1 8 (89 144 233 377 610 987) 10946)
>  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> Why???

As Joe noted in his last email:

> remember, back in perl-land the default behavior is to flatten,
> in raku ... by default [raku is] oriented toward building up
> complex structures like arrays of arrays.

So Raku does *not* flatten the `10..15`, yielding the result you see.

----

You may have been thrown by seeing that, with `@fib[1..5]`, the
range *is* flattened. That's because of the "single argument rule".
This is an important Raku concept.

In brief, in contexts that are inherently "listy", not "scalar", Raku
takes the view that if it's given a *single* thing that is itself listy,
Raku should treat that thing as the list of elements it contains.
Whereas, if it's given a list of things, then it just accepts that list
as is.

Thus `@fib[1..5]` treats the `1..5` as 5 elements, i.e. flattening
the range, but treats `@fib[1, 5, 10..15, 20]` as 4 elements, with
the third being a nested 6 element list that it does *not* flatten.

----

Perhaps you want the whole lot flattened.

Quoting Joe again:

> arrays don't flatten unless you do something to make it happen

One option:

@fib[flat 1, 5, 10..15, 20]
> (1 8 89 144 233 377 610 987 10946)

love, raiph

Reply via email to