Вызов функции n раз acl2

Я не могу понять, как вызвать функцию n раз для использования в другой функции

У меня есть функция

(defun right-shift (l)
   (append l '(0))) 

И мне нужно написать еще одну функцию, которая должна сместить '(l) n раз

(defun right-shift-n-times (l n)
   (natp n)
       ...)

Я даже не уверен, что правильно запустил эту функцию и не могу понять, как ее вызвать n раз.

1 ответ

Вы должны дать еще немного предыстории своей проблемы. Я думаю, что если вы хотите сдвигать побитовые данные, есть более эффективные способы.

Для решения в стиле домашней работы я бы начал с чего-то вроде этого:

 (defun right-shift-n-times (l n)
       (if (zerop n)
           l
           (right-shift-n-times (right-shift l) (1- n))))

но я не очень опытный лиспер.

Другие вопросы по тегам