Sí, es posible definir variables locales en el esquema, ya sea usando let
o define
dentro de una función. Usando set!
, también es posible reasignar una variable como usted se imagina.
Habiendo dicho eso, probablemente no deberías resolver tu problema de esta manera. En Scheme, generalmente es una buena práctica evitar set!
cuando no lo necesite (y en este caso definitivamente no es necesario). Más iterar sobre una lista usando índices es usualmente una mala idea ya que las listas de esquema son listas enlazadas y como tal acceso aleatorio O (n) (haciendo que la función last
funcione como desee O(n^2)
).
De modo que una simple implementación recursiva sin índices sería más idiomática y más rápida de lo que planeas hacer y, como tal, preferible.
¿Qué algoritmo tenía en mente para obtener el último elemento? –
@larsmans: recorre la lista hasta que 'i' sea igual a la longitud? ¿Suena razonable en Scheme? – Chan
suena como un desperdicio porque estás atravesando la lista dos veces; la primera vez para calcular la longitud. El algoritmo sería de tiempo lineal (no cuadrático como asume @ sepp2k), sino de dos pasos y no idiomático. –