1 | (import scheme chicken) |
---|
2 | |
---|
3 | (define assq-val-no-warning (lambda (sym lst) |
---|
4 | (let ((el (assq sym lst))) |
---|
5 | (if (list? el) |
---|
6 | (if (fx< 1 (length el)) |
---|
7 | (cadr el) |
---|
8 | #f) |
---|
9 | (if (pair? el) |
---|
10 | (cdr el) |
---|
11 | #f))))) |
---|
12 | |
---|
13 | |
---|
14 | (define assq-val-warning (lambda (sym lst) |
---|
15 | (let ((el (assq sym lst))) |
---|
16 | (if (pair? el) |
---|
17 | (if (list? el) |
---|
18 | (if (fx< 1 (length el)) |
---|
19 | (cadr el) |
---|
20 | #f) |
---|
21 | (cdr el)) ; <== compiler warning |
---|
22 | #f)))) |
---|
23 | |
---|
24 | (define assq-val-also-no-warning (lambda (sym lst) |
---|
25 | (define el (assq sym lst)) |
---|
26 | (if (pair? el) |
---|
27 | (if (list? el) |
---|
28 | (if (fx< 1 (length el)) |
---|
29 | (cadr el) |
---|
30 | #f) |
---|
31 | (cdr el)) |
---|
32 | #f))) |
---|
33 | |
---|
34 | (print (assq-val-no-warning 'a '((a "a")))) ; => "a" |
---|
35 | (print (assq-val-no-warning 'a '((a . "a")))) ; => "a" |
---|
36 | (print (assq-val-no-warning 'b '((a . "a")))) ; => #f |
---|
37 | |
---|
38 | (print (assq-val-warning 'a '((a "a")))) ; => "a" |
---|
39 | (print (assq-val-warning 'a '((a . "a")))) ; => "a" |
---|
40 | (print (assq-val-warning 'b '((a . "a")))) ; => #f |
---|
41 | |
---|
42 | (print (assq-val-also-no-warning 'a '((a "a")))) ; => "a" |
---|
43 | (print (assq-val-also-no-warning 'a '((a . "a")))) ; => "a" |
---|
44 | (print (assq-val-also-no-warning 'b '((a . "a")))) ; => #f |
---|