somebody pointed out that the previous fn was failing because i wasn't
calling 'foo' w/ dyadic arguments in the inner dfn

On Wed, Oct 9, 2019 at 2:16 PM Rowan Cannaday <cannad...@gmail.com> wrote:

> interestingly enough this is ok:
>       foo ← {⍬{⍺,(1+1↑⍵),(foo 1↓⍵)}⍣(~0=⍴⍵)⍵}
>       foo 1 2 3
> 2 3 4
>
> but this isnt:
>       foo ← {⍺{⍺,(1+1↑⍵),(foo 1↓⍵)}⍣(~0=⍴⍵)⍵}
>       ⍬ foo 1 2 3
> VALUE ERROR
> foo[1]  λ←⍺ λ1⍣(∼0=⍴⍵)⍵
>           ^
>       ⎕CR 'foo'
> λ←⍺ λ1 ⍵
> λ←⍺{⍺,(1+1↑⍵),(foo 1↓⍵)}⍣(~0=⍴⍵)⍵
>
> On Wed, Oct 9, 2019 at 1:29 PM Rowan Cannaday <cannad...@gmail.com> wrote:
>
>> making progress...
>>
>>       foo ← {{(1+1↑⍵),(foo 1↓⍵)}⍣(~0=⍴⍵)⍵}
>>       foo 1 2 3
>> 2 3 4
>>
>> On Wed, Oct 9, 2019 at 12:47 PM Rowan Cannaday <cannad...@gmail.com>
>> wrote:
>>
>>> this is a slightly better way of writing my (still broken) accumulator:
>>> acc←{⍺{⍺ acc 1↑⍵}⍣(0=⍴⍵)⊢⍵}
>>>
>>> On Wed, Oct 9, 2019 at 12:40 PM Rowan Cannaday <cannad...@gmail.com>
>>> wrote:
>>>
>>>> Given a recursive factorial definition:
>>>> fact←{{⍵ × fact ⍵-1}⍣(⍵>2)⊢1⌈⍵}
>>>>
>>>> [written by Kacper Gutowski in the 'Recursive Lambda' thread]
>>>>
>>>> I am attempting to write a basic accumulator. This should take an empty
>>>> vector as the left value argument, and a rank 1 array as the right value
>>>> argument.
>>>> Every iteration it should drop a value from the right value, and append
>>>> it to the left, until the right value is an empty vector.
>>>>
>>>> I thought I'd be able to do something like the following:
>>>> acc←{⍺,{acc 1↑⍵}⍣(0=⍴⍵)⊢⍵}
>>>> ⍬ acc 1 2 3
>>>>
>>>> But modifying this to say, add a 1 to every number, still returns the
>>>> input vector ⍵.
>>>>
>>>> Thoughts?
>>>>
>>>>
>>>> On Fri, Sep 27, 2019 at 3:44 PM Rowan Cannaday <cannad...@gmail.com>
>>>> wrote:
>>>>
>>>>> Hello y'all.
>>>>>
>>>>> I have been attempting to learn function composition & higher-order
>>>>> functions in gnu-apl, and how to use it to perform tree traversal.
>>>>>
>>>>>
>>>>> https://en.wikipedia.org/wiki/Function_composition_(computer_science)#APL
>>>>> https://en.wikipedia.org/wiki/Higher-order_function#APL
>>>>> https://rosettacode.org/wiki/Tree_traversal#APL
>>>>>
>>>>> Unfortunately a lot of the syntax used is dyalog & dfn specific, so
>>>>> working out some of the examples is a bit tricky for myself.
>>>>> (the main inconsistencies are '∇' as a recursive function definition,
>>>>> ⍺⍺ & ⍵⍵ to refer to left and right operands, '@' as the 'at' operator, '⍣'
>>>>> operator differences, as well as possibly others).
>>>>>
>>>>> Has anybody done 'idiomatic' tree traversal in gnu-apl? Does anybody
>>>>> use primitive composition functions in their code?
>>>>>
>>>>> Trying to figure out what works and feels natural in the language. Any
>>>>> examples or guidance would be appreciated.
>>>>>
>>>>> Examples:
>>>>>
>>>>> Higher order fns in gnu-apl:
>>>>> ∇Z ← (L twice) B
>>>>>     Z ← L L B
>>>>> ∇
>>>>>
>>>>> ∇Z ← plusthree B
>>>>>     Z ← B + 3
>>>>> ∇
>>>>>
>>>>> ∇Z ← g B
>>>>>     Z ← plusthree twice B
>>>>> ∇
>>>>>
>>>>

Reply via email to