Looks like list doesn't produce a new list when called through apply, (define x '(1 2 3)) (define y (apply list x)) (eq? x y) => #t I'm looking at the fix below. This removes the C level scm_list, but that should be ok, it's not documented and does nothing.