Да, в схеме можно определить локальные переменные, используя let
или define
внутри функции. Используя set!
, также можно переназначить переменную, как вы себе представляете.
При этом вы, вероятно, не должны решать свою проблему таким образом. В Схеме обычно хорошей практикой является избегать set!
, когда вам это не нужно (а в этом случае вам определенно не нужно). Дальнейшая итерация по списку с использованием индексов, как правило, является плохой идеей, поскольку списки схемы являются связанными списками и как таковой произвольный доступ O (n) (делая функцию last
так, как вы хотите ее реализовать O(n^2)
).
Таким образом, простая рекурсивная реализация без индексов будет более идиоматичной и более быстрой, чем то, что вы планируете делать, и поэтому предпочтительнее.