Anonymous recursion: Difference between revisions
Content added Content deleted
No edit summary |
(→{{header|TXR}}: Drop @(do ...)) |
||
Line 2,045: | Line 2,045: | ||
{{trans|Common_Lisp}} |
{{trans|Common_Lisp}} |
||
⚫ | |||
<lang txr>@(do |
|||
(let ((hidden-name (gensym "RECURSIVE-"))) |
|||
⚫ | |||
( |
^(macrolet ((recurse (. args) ^(,',hidden-name ,*args))) |
||
(labels ((,hidden-name (,*[mapcar first parm-init-pairs]) ,*body)) |
|||
(,hidden-name ,*[mapcar second parm-init-pairs]))))) |
|||
(,hidden-name ,*[mapcar second parm-init-pairs]))))) |
|||
(defun fib (number) |
|||
(if (< number 0) |
|||
(error "Error. The number entered: ~a is negative" number) |
|||
(recursive ((n number) (a 0) (b 1)) |
|||
(if (= n 0) |
|||
a |
|||
(recurse (- n 1) b (+ a b)))))) |
|||
(put-line `fib(10) = @(fib 10)`) |
|||
(put-line `fib(-1) = @(fib -1)`))</lang> |
|||
{{out}} |
{{out}} |