Ticket #1481: compiler-warning.scm

File compiler-warning.scm, 1.1 KB (added by snoewchen, 6 years ago)

"assq-val-warning" produces the compiler warning

Line 
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