>> Exemple tout simple, une opération sur deux tenseurs à 5 dimensions peut s'écrire très simplement avec 5 boucle for imbriquées et juste une opération toute simple au bout sur une ligne.
Ou avec une macro récursive, genre
(define-macro (tensor-prod body . loops)
(if (null? loops)
`,body
`(for ,(car loops)
(tensor-prod ,body ,@(cdr loops)))))
Que tu appelles ensuite
(tensor-prod (foo a (bar b c))
(a from 1 to 2)
(b from 3 to 42)
(c from 5 to 2 step -1))
et qui te donne:
(for (a from 1 to 2)
(for (b from 3 to 42)
(for (c from 5 to 2 step -1)
(foo a (bar b c)))))
Soit une profondeur d'indentation quelconque au prix d'une indentation constante de taille 1 (lors de l'appel, et 3 lors de la définition).
[^] # Re: Problème de la taille des tabulations avec une limite de 80 colonne
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au sondage La taille de l'indentation de mon code source (tab ou espace). Évalué à 3.
Ou avec une macro récursive, genre
(define-macro (tensor-prod body . loops)
(if (null? loops)
`,body
`(for ,(car loops)
(tensor-prod ,body ,@(cdr loops)))))
Que tu appelles ensuite
(tensor-prod (foo a (bar b c))
(a from 1 to 2)
(b from 3 to 42)
(c from 5 to 2 step -1))
et qui te donne:
(for (a from 1 to 2)
(for (b from 3 to 42)
(for (c from 5 to 2 step -1)
(foo a (bar b c)))))
Soit une profondeur d'indentation quelconque au prix d'une indentation constante de taille 1 (lors de l'appel, et 3 lors de la définition).