home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 2: PC / frozenfish_august_1995.bin / bbs / d09xx / d0963.lha / SIOD / scm / appello.scm next >
Text File  |  1993-01-02  |  3KB  |  64 lines

  1. (define (sostituisci lis a b)
  2.         (define (sos-it lis a b ris)
  3.                 (cond ((null? lis) ris)
  4.                       ((eqv? (car lis) a) (sos-it (cdr lis) 
  5.                                                   a 
  6.                                                   b 
  7.                                                   (append ris 
  8.                                                           (list b))))
  9.                       ((eqv? (car lis) b) (sos-it (cdr lis) 
  10.                                                   a 
  11.                                                   b 
  12.                                                   (append ris 
  13.                                                           (list a))))
  14.                       (else (sos-it (cdr lis) 
  15.                                     a 
  16.                                     b 
  17.                                     (append ris 
  18.                                             (list (car lis)))))))
  19.          (sos-it lis a b nil))
  20.  
  21. (define (sostituisci2 lis a b)
  22.         (define (sos-it lis a b ris)
  23.                 (cond ((null? lis) ris)
  24.                       ((eqv? (car lis) a) (sos-it (cdr lis) 
  25.                                                   a 
  26.                                                   b 
  27.                                                   (cons b ris)))
  28.                       ((eqv? (car lis) b) (sos-it (cdr lis) 
  29.                                                   a 
  30.                                                   b 
  31.                                                   (cons a ris)))
  32.                       (else (sos-it (cdr lis) 
  33.                                     a 
  34.                                     b 
  35.                                     (cons (car lis) ris)))))
  36.          (reverse (sos-it lis a b nil)))
  37.  
  38. (define (sostituisci-all lis a b)
  39.         (define (sos-all-it lis a b ris)
  40.                 (if (atom? (car lis))
  41.                     (cond ((null? lis) ris)
  42.                           ((eqv? (car lis) a) (sos-all-it (cdr lis) 
  43.                                                       a 
  44.                                                       b 
  45.                                                       (append ris 
  46.                                                               (list b))))
  47.                           ((eqv? (car lis) b) (sos-all-it (cdr lis) 
  48.                                                       a 
  49.                                                       b 
  50.                                                       (append ris 
  51.                                                               (list a))))
  52.                           (else (sos-all-it (cdr lis) 
  53.                                         a 
  54.                                         b 
  55.                                         (append ris 
  56.                                                 (list (car lis))))))
  57.                       (sos-all-it (cdr lis) 
  58.                               a 
  59.                               b 
  60.                               (append ris 
  61.                                    (list (sos-all-it (car lis) a b nil))))))
  62.          (sos-all-it lis a b nil))
  63.  
  64.