I've taken to defining "@" as the Y combinator, so it looks kind of like a "goto" label for looping, e.g.:<p><pre><code> (@\fact\n \n==n <= n 0 1 (* n (fact (- n 1))))
</code></pre>
(The \n==n forces an eager evaluation, to avoid building a tower of deferred operations with large n.)<p>The symbol "fact" is arbitrary, e.g. you could say this instead:<p><pre><code> (@\loop\n \n==n <= n 0 1 (* n (loop (- n 1))))
</code></pre>
To define a name "fact" for that function, it's:<p><pre><code> \fact = (@\loop\n \n==n <= n 0 1 (* n (loop (- n 1))))</code></pre>