Как связать множественные возвращаемые значения 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))