AVVISO! Le informazioni di questo post potrebbero non essere più valide in quanto non aggiornate. Usa i commenti per contribuire a tenere il post aggiornato.
ULTIMA REVISIONE DEL POST: 07/08/2010
Definiamo in Scheme una procedura a valori procedurali cycle-funzione che data una lista restituisce una funzione periodica e restituisce il valore alla posizione indicata della lista:
(define cycle-fun (lambda (n) (lambda (count) (if (= count 0) (car n) (if (> count 7) ((cycle-fun n) (- count 8)) (list-ref n count) ) ) ))) (define f (cycle-fun '(0 -1 -2 -1 0 1 2 1))) ;esempi di lancio della procedura ; f di 2 -> -2 ; f di 11 -> -1 (f 2) (f 11)
Soluzione “matematica” alternativa più complessa (secondo il mio punto di vista)
(define cycle-fun (lambda (p) (lambda (x) ; x >= 0 (list-ref p (remainder x (length p))) )))