source: liacs/cvp/scheme/exercise2.scm@ 108

Last change on this file since 108 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: 2.2 KB
Line 
1#!/usr/bin/env guile --debug -ds
2!#
3
4; * Rick van der Zwet
5; * 0433373
6; * Scheme programming assigment 1a
7; * Licence: BSD
8; * $Id: exercise2.scm 378 2007-12-11 16:14:47Z rick $
9
10;infix order (<left-tree> <node> <right-tree>), in breadth first order
11;just seems to see the fact we are 'pushing' the node and then
12;traversing the tree
13
14(define treewalking
15 (lambda (tree)
16; (display "Debug : ")
17; (display tree)
18; (newline)
19; (display "Length : ")
20; (display (length tree))
21; (newline)
22 ;when nothing left on the stack bail out
23 (if (null? tree) tree
24 (cond
25 ;emtry branch, continue
26 ((null? (car tree))
27 (treewalking (cdr tree))
28 )
29 ;leaf, add and continue
30 ((symbol? (caar tree))
31 (cons
32 (caar tree)
33 (treewalking (cdr tree))
34 )
35 )
36 (else
37 ; fetch the node
38 ; check wether we still have an tail
39 (if (null? (cdr tree))
40 (cons
41 (cadar tree)
42 ; recurse with left, right
43 (treewalking (cons (caar tree)
44 (cddar tree)
45 )
46 )
47 )
48 (cons
49 (cadar tree)
50 ; recurse with tail, left, right
51 (treewalking (append (cdr tree)
52 (cons (caar tree)
53 (cddar tree)
54 )
55 )
56 )
57 )
58 )
59 )
60 )
61 )
62 )
63)
64
65(define treewalk
66 (lambda (tree)
67 (treewalking (list tree))
68 )
69)
70
71(display
72 (equal?
73 (treewalk
74 '( (b) a ( ((f) d (g)) c (() e (h)) ) )
75 )
76 '(a b c d e f g h)
77 )
78)
Note: See TracBrowser for help on using the repository browser.