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 >>>> ∇ >>>> >>>