ob-scheme has a bug

In Org Babel, when the actual parameter to a :var header argument is a list, or a table, and your language is a Lisp, you get a list:

#+NAME: foo
  - 1
  - 2
  - 3

#+BEGIN_SRC elisp :var xs=foo
  xs
#+END_SRC

#+RESULTS:
| 1 |
| 2 |
| 3 |

Except that when using Scheme, you don't– that code errors-out. The *Geiser Messages* window tells the tale:

INFO: REQUEST: <10>: ,geiser-eval #f (begin (define xs ((1) (2) (3)))
xs
) ()

INFO: RETORT: ((error (key . retort-syntax)) (output . "ice-9/boot-9.scm:1705:22: In procedure raise-exception:
Wrong type to apply: 1

The list isn't being quoted correctly.

tusharhero also found this just last month. Ihor Radchenko promptly fixed it in the Org Mode code base, but I just re-built my Emacs from source yesterday morning and the new code hand't landed there, yet.

In the meantime, you can patch it like so:

(defun patch-org-babel-scheme-expand-header-arg-vars (vars)
  "Expand :var header arguments given as VARS."
  (mapconcat
   (lambda (var)
     (format "(define %S (quote %S))" (car var) (cdr var)))
   vars
   "\n"))

(advice-add
 'org-babel-scheme-expand-header-arg-vars
 :override
 #'patch-org-babel-scheme-expand-header-arg-vars)