Slowness with big list of atoms

Hello, I've noticed that Geiser is very slow on returning big lists of non-lists. Here is an example.

  1. Start Geiser (I used M-x run-guile).

  2. Define there a couple of auxiliary variables: a big list of strings and a big list of lists:

    (define list-of-strings (make-list 5000 "foo"))
    (define list-of-lists (make-list 5000 '("foo")))
  3. Define an auxiliary elisp function:

    (defun geiser-simple-eval (str)
     (with-current-buffer (car geiser-repl--repls)
       (let* ((code `(:eval (:scm ,str)))
              (ret (geiser-eval--send/wait code)))
         ;; We don't even need the result, so just return nil.
         ;; (cdr (assq 'result ret))
         nil)))
  4. Now evaluate the following elisp expressions:

    (geiser-simple-eval "list-of-lists")   ; very fast
    (geiser-simple-eval "list-of-strings") ; very slow

For me the first expression was evaluated "instantly", while the second one took about 20 seconds (it depends on CPU of course).

I also checked lists of symbols and lists of numbers: they are also significantly slower than list of lists.