newLISP Неверная функция
У меня есть домашнее задание, где нам нужно написать некоторые функции в newLISP. У меня возникла проблема, поэтому я привел пример проблемы, чтобы узнать, может ли кто-нибудь мне помочь.
Проблема в том, что после завершения рекурсивной функции она возвращает
ERR: invalid function :
ошибка. Это происходит независимо от того, что
function
Звоню есть.
Например, я создал рекурсивную функцию, которая уменьшает число, пока мы не достигнем 0. Это код:
(define (decrement num)
(if (> num 0)
(
(println num)
(decrement (- num 1))
)
(
(println "done")
)
)
)
Всякий раз, когда я запускаю эту функцию, начиная с числа 10, результат выглядит так:
> (decrement 10)
10
9
8
7
6
5
4
3
2
1
done
ERR: invalid function : ((println "done"))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement 10)
Я не могу понять, почему это возвращает ошибку неверной функции. Я очень мало знаю о newLISP, так что это может быть простой вопрос.
Благодаря!
1 ответ
В Лиспе вы не используете произвольные круглые скобки для группировки вещей. Итак, вы должны сделать что-то вроде этого:
(define (decrement num)
(if (> num 0)
(begin
(println num)
(decrement (- num 1))
)
(println "done")
)
)