source: liacs/cvp/scheme/exercise1a.scm@ 321

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
Line 
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.