So I wanted to try out gnu guix and thus make myself more familiar with guile first. While running some tests I encountered a problem/bug with eq?:
$ guile -v guile (GNU Guile) 2.1.1 $ guile scheme@(guile-user)> (define (multirember a lat) (cond ((null? lat) '()) ((eq? (car lat) a) (multirember a (cdr lat))) (else (cons (car lat) (multirember a (cdr lat)))))) scheme@(guile-user)> (multirember '(a b) '(x y (a b) z (a b))) $1 = (x y z) So why does guile return (x y z)? I expected (x y (a b) z (a b)). I know eq? should only be used with symbols (and thus this example is more theoretical) but nevertheless the return value is not right, since (eq? '(a b) '(a b)) returns #f (Btw same in guile 2.0.11).