I don't know about a loop, but wouldn't this do the same thing?

*    IOTA ← {∘.,/⍳¨⍵}*

Regards,
Elias

On 2 March 2016 at 09:57, Christian Robert <christian.rob...@polymtl.ca>
wrote:

> I have this function,
>
>       ∇IOTA[⎕]∇
>     ∇
> [0]   z←IOTA v
> [1]   z←⍳↑v
> [2]   v←1↓,v
> [3]  Loop: →(0=⍴v)/0
> [4]   z←z∘.,⍳↑v
> [5]   v←1↓v
> [6]   →Loop
>     ∇
>
>       ]boxing 24
>
>       IOTA 0
> ┌⊖┐
> │0│
> └─┘
>       IOTA 10
> ┌10──────────────────┐
> │1 2 3 4 5 6 7 8 9 10│
> └────────────────────┘
>       IOTA 2 3
> ┌3────────────────┐
> 2┌2──┐ ┌2──┐ ┌2──┐│
> ││1 1│ │1 2│ │1 3││
> │└───┘ └───┘ └───┘│
> │┌2──┐ ┌2──┐ ┌2──┐│
> ││2 1│ │2 2│ │2 3││
> │└───┘ └───┘ └───┘│
> └∊────────────────┘
>       IOTA 2 3 5
> ┌5──────────────────────────────────────┐
> 2┌3────┐ ┌3────┐ ┌3────┐ ┌3────┐ ┌3────┐│
> ││1 1 1│ │1 1 2│ │1 1 3│ │1 1 4│ │1 1 5││
> 3└─────┘ └─────┘ └─────┘ └─────┘ └─────┘│
> │┌3────┐ ┌3────┐ ┌3────┐ ┌3────┐ ┌3────┐│
> ││1 2 1│ │1 2 2│ │1 2 3│ │1 2 4│ │1 2 5││
> │└─────┘ └─────┘ └─────┘ └─────┘ └─────┘│
> │┌3────┐ ┌3────┐ ┌3────┐ ┌3────┐ ┌3────┐│
> ││1 3 1│ │1 3 2│ │1 3 3│ │1 3 4│ │1 3 5││
> │└─────┘ └─────┘ └─────┘ └─────┘ └─────┘│
> │                                       │
> │┌3────┐ ┌3────┐ ┌3────┐ ┌3────┐ ┌3────┐│
> ││2 1 1│ │2 1 2│ │2 1 3│ │2 1 4│ │2 1 5││
> │└─────┘ └─────┘ └─────┘ └─────┘ └─────┘│
> │┌3────┐ ┌3────┐ ┌3────┐ ┌3────┐ ┌3────┐│
> ││2 2 1│ │2 2 2│ │2 2 3│ │2 2 4│ │2 2 5││
> │└─────┘ └─────┘ └─────┘ └─────┘ └─────┘│
> │┌3────┐ ┌3────┐ ┌3────┐ ┌3────┐ ┌3────┐│
> ││2 3 1│ │2 3 2│ │2 3 3│ │2 3 4│ │2 3 5││
> │└─────┘ └─────┘ └─────┘ └─────┘ └─────┘│
> └∊──────────────────────────────────────┘
>
>
>
> my question is: can such a function can be written in Lambda style ?
> (especially in gnuapl)
>
> eg:
>
> IOTA ← { ... }
>
> That IOTA function simulate the behavior of "⍳" on "Dyalog APL" and
> NARS2000 and more interpretors when the argument is a vector.
>
>
> thanks,
>
> Xtian.
>
>
>
>

Reply via email to