Skip to content

Recursion (∇)

Syntax

Inside a dfn, ∇ refers to the dfn itself.

Monadic recursion

      fact ← {⍵≤1 : 1 ⋄ ⍵×∇ ⍵-1}
      fact 5
120

Dyadic recursion

For dyadic recursive calls, ∇ is called with a left argument:

      gcd ← {⍵=0 : ⍺ ⋄ ⍵ ∇ ⍵|⍺}
      12 gcd 8
4

Fibonacci

      fib ← {⍵≤1 : ⍵ ⋄ (∇ ⍵-1)+∇ ⍵-2}
      fib 10
55

Notes

∇ captures the dfn as a closure, so it works correctly with lexical scope. Named dfns can also call themselves by name.

See also

  • Dfns -- dfn basics
  • Guards -- conditional returns