In precedenza avevo utilizzato la funzionalità "being the elements of" del ciclo per scorrere su una sequenza di un tipo sconosciuto. Ho appena scoperto che "essere gli elementi di" non è fornito in ogni implementazione di Common Lisp e mi chiedo se ci sia un modo pulito per iterare su una sequenza usando loop. La soluzione migliore che sono riuscito a ottenere è quella di forzare la sequenza in una lista e poi scorrere su quella.Come eseguire iterazioni su una sequenza in Common Lisp con loop?
7
A
risposta
10
No, LOOP
non fornisce direttamente tale funzione. Se l'implementazione dello LOOP
è estensibile (di cui lo standard non dice nulla), potresti essere in grado di implementare tale funzione.
LOOP
ha clausole per iterare su liste - for item in list
- e una clausola per iterare su un vettore - for e across vector
- di notare che le stringhe sono anche vettori, matrici unidimensionali. Ma non entrambi insieme.
Altrimenti utilizzare MAP
o MAP-INTO
per iterare su sequenze.
La macro ITERATE
fornisce questa funzionalità: for i in-sequence seq
.