Это может произойти, если вспомогательные библиотеки (dll или ocxs) не зарегистрированы должным образом или версии установленных библиотек отличаются (и несовместимы) с версией, с которой приложение было скомпилировано изначально.
Убедитесь, что все зависимые библиотеки зарегистрированы и правильная версия.
Возможно, вам придется перекомпилировать приложение, чтобы оно работало с более новыми версиями вспомогательных библиотек.
значения, стиль передачи продолжения и список - это как минимум три способа возврата нескольких значений:
(import (rnrs))
; let-values + values
(define (foo1)
(values 1 2 3))
(let-values (((a b c) (foo1)))
(display (list a b c))
(newline))
; cps
(define (foo2 k)
(k 1 2 3))
(foo2 (lambda (a b c)
(display (list a b c))
(newline)))
; list
(define (foo3)
(list 1 2 3))
(let ((result (foo3)))
(display result)
(newline))
The Guile implementation of Scheme has a receive
syntax, which it says is "much more convenient" than values
. I haven't used it yet, however, but this may be useful:
http://www.gnu.org/software/guile/manual/html_node/Multiple-Values.html
Вы можете вернуть пару значений в cons-ячейке:
(define (foo)
(cons 'a 5))
(let* ((r (foo))
(x (car r))
(y (cdr r)))
(display x) (display y) (newline))
Вы можете обобщить это, чтобы также вернуть несколько значений в списке.