Last change
on this file since 321 was 2, checked in by Rick van der Zwet, 15 years ago |
Initial import of data of old repository ('data') worth keeping (e.g. tracking
means of URL access statistics)
|
-
Property svn:executable
set to
*
|
File size:
1.2 KB
|
Rev | Line | |
---|
[2] | 1 | #!/usr/bin/env guile -s
|
---|
| 2 | !#
|
---|
| 3 |
|
---|
| 4 |
|
---|
| 5 | ; * Rick van der Zwet
|
---|
| 6 | ; * 0433373
|
---|
| 7 | ; * Scheme programming assigment 1a
|
---|
| 8 | ; * Licence: BSD
|
---|
| 9 | ; * $Id: exercise1a.scm 374 2007-12-10 20:18:45Z rick $
|
---|
| 10 |
|
---|
| 11 | ; replace find and replace
|
---|
| 12 | (define sub_atom
|
---|
| 13 | (lambda (atom sub)
|
---|
| 14 | ;write down replacement else procede to next of the list
|
---|
| 15 | (cond
|
---|
| 16 | ((null? sub) atom)
|
---|
| 17 | ((eq? (caar sub) atom) (cadar sub))
|
---|
| 18 | (else (sub_atom atom (cdr sub)))
|
---|
| 19 | )
|
---|
| 20 | )
|
---|
| 21 | )
|
---|
| 22 |
|
---|
| 23 | (define substitute
|
---|
| 24 | (lambda (lijst sub)
|
---|
| 25 | ;if element a return sub if found else element using adding pair (a
|
---|
| 26 | ; a) to replace sub
|
---|
| 27 | (if (list? lijst)
|
---|
| 28 | ;if list and both head and tail recurse both
|
---|
| 29 | ;else recurse single
|
---|
| 30 | (if (null? (cdr lijst))
|
---|
| 31 | (list (substitute (car lijst) sub))
|
---|
| 32 | (cons (substitute (car lijst) sub)
|
---|
| 33 | (substitute (cdr lijst) sub))
|
---|
| 34 | )
|
---|
| 35 | ; try to do the replacement
|
---|
| 36 | (sub_atom lijst sub)
|
---|
| 37 | )
|
---|
| 38 | )
|
---|
| 39 | )
|
---|
| 40 |
|
---|
| 41 |
|
---|
| 42 |
|
---|
| 43 |
|
---|
| 44 | (display
|
---|
| 45 | (equal?
|
---|
| 46 | (substitute
|
---|
| 47 | '((a (b c) d) a (f b))
|
---|
| 48 | '((a z) (b y))
|
---|
| 49 | )
|
---|
| 50 | '((z (y c) d) z (f y))
|
---|
| 51 | )
|
---|
| 52 | )
|
---|
Note:
See
TracBrowser
for help on using the repository browser.