Как связать множественные возвращаемые значения Racket с именами глобальных переменных, используя define?

Учитывая простую функцию, которая возвращает одно значение, я могу использовать define привязать возвращаемое значение к имени

(define (foo) 1)
(define bar (foo))

однако это не представляется возможным, когда функция возвращает несколько значений, используя values,

(define (baz) (values 2 3))
(define quux (baz))
  ; define-values: result arity mismatch;
  ;  expected number of values not received
  ;   expected: 1
  ;   received: 2
  ;   from: 
  ;   in: definition of quux
  ;   values...:
  ;    2
  ;    3

Я просмотрел документы, но единственное, что связано с values является let-values, который на самом деле не применяется здесь.

1 ответ

Решение

Ты хочешь define-values определение эквивалентно let-values,

(define (baz) (values 2 3))
(define-values (foo bar) (baz))
Другие вопросы по тегам