2009-12-18 7 views

Répondre

3

Une version simple peut être conçue comme ceci:

(define (replace old-element new-element list) 
    ; if the list is null, just return null 
    ; else if the car of the list is equal to old-element 
    ; run replace on the rest of the list, and cons new-element onto it 
    ; else 
    ; run replace on the rest of the list, and cons the car onto it) 

(je quittais les détails à vous, puisque tu dois apprendre en faisant.)

Rappelez-vous, dans le schéma de la façon la plus naturelle Les choses seront généralement d'assembler une nouvelle liste pièce par pièce à partir de votre ancienne liste, pas d'essayer de faire de petits changements un à la fois à votre ancienne liste.

Notez que vous pouvez également utiliser map pour le faire de manière beaucoup plus concise.

+1

La syntaxe ici est mauvaise, elle devrait être '(define (replace old new list) ...)'. En ce qui concerne l'implémentation réelle - ne faites pas cela, utilisez 'map'. –

+2

J'ai supposé qu'il travaille à partir d'un guide ou d'un manuel qui n'a pas encore trouvé de map. – mquander

+0

Un tel livre aurait fourni un type similaire de guide, donc il n'est pas nécessaire parce que le livre le couvre, ou parce que 'map' est disponible. –