1

1 つの値を返す単純な関数が与えられた場合、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

私はドキュメントに目を通しましたが、関連する唯一のものvalueslet-valuesであり、実際にはここには当てはまりません。

4

1 に答える 1

3

define-valuesと同等の定義が必要ですlet-values

(define (baz) (values 2 3))
(define-values (foo bar) (baz))
于 2015-03-21T22:48:49.933 に答える