My favorites
▼
|
Sign in
hefdoeshwk
Code exercises for the blog Hef Does Homework.
Project Home
Downloads
Wiki
Issues
Source
Checkout
Browse
Changes
Source path:
svn
/
trunk
/
eopl2
/
scheme
/
1.18.3.scm
r24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
; behaves like `car&cdr` [see exercise 1.18.2], but does not use `compose` in its output
(define car&cdr2
(lambda (s slist errvalue)
(let ((result (car&cdr2-2 s slist errvalue 'x)))
(if (equal? result errvalue)
errvalue
(cons 'lambda (cons '(x) (list result)))))))
(define car&cdr2-2
(lambda (s slist errvalue path)
(cond
((null? slist) errvalue)
((equal? (car slist) s) (cons 'car (list path)))
(else (let (
(car-result
(if (list? (car slist))
(car&cdr2-2 s (car slist) errvalue (cons 'car (list path)))
errvalue)))
(if (equal? car-result errvalue)
(car&cdr2-2 s (cdr slist) errvalue (cons 'cdr (list path)))
car-result))))))
(car&cdr2 'a '(a b c) 'fail)
; (lambda (x) (car x))
(car&cdr2 'c '(a b c) 'fail)
; (lambda (x) (car (cdr (cdr x))))
(car&cdr2 'dog '(cat lion (fish dog ()) pig) 'fail)
; (lambda (x) (car (cdr (car (cdr (cdr x))))))
(car&cdr2 'a '(b c) 'fail)
; fail
Show details
Hide details
Change log
r2
by jonathan.hefner on Jun 8, 2008
Diff
Initial commit
Go to:
/trunk/.project
/trunk/eopl2
/trunk/eopl2/about.txt
/trunk/eopl2/haskell
/trunk/eopl2/haskell/1.15.1.hs
/trunk/eopl2/haskell/1.15.2.hs
/trunk/eopl2/haskell/1.15.3.hs
/trunk/eopl2/scheme
/trunk/eopl2/scheme/1.15.1.scm
/trunk/eopl2/scheme/1.15.10.scm
/trunk/eopl2/scheme/1.15.2.scm
/trunk/eopl2/scheme/1.15.3.scm
/trunk/eopl2/scheme/1.15.4.scm
/trunk/eopl2/scheme/1.15.5.scm
/trunk/eopl2/scheme/1.15.6.scm
/trunk/eopl2/scheme/1.15.7.scm
/trunk/eopl2/scheme/1.15.8.scm
/trunk/eopl2/scheme/1.15.9.scm
/trunk/eopl2/scheme/1.16.1.scm
/trunk/eopl2/scheme/1.16.2.scm
/trunk/eopl2/scheme/1.16.3.scm
/trunk/eopl2/scheme/1.16.4.scm
/trunk/eopl2/scheme/1.16.5.scm
/trunk/eopl2/scheme/1.17.1.scm
/trunk/eopl2/scheme/1.17.2.scm
/trunk/eopl2/scheme/1.17.3.scm
/trunk/eopl2/scheme/1.18.1.scm
/trunk/eopl2/scheme/1.18.2.scm
/trunk/eopl2/scheme/1.18.3.scm
/trunk/eopl2/scheme/1.19.scm
/trunk/eopl2/scheme/1.22.scm
/trunk/eopl2/scheme/1.23.scm
/trunk/eopl2/scheme/1.24.scm
/trunk/eopl2/scheme/1.25.scm
/trunk/eopl2/scheme/figure1.1.scm
Project members,
sign in
to write a code review
Older revisions
All revisions of this file
File info
Size: 1115 bytes, 35 lines
View raw file
Powered by
Google Project Hosting