私はほとんどすべてのスキーム関数が1つのリストだけを出力として返すことができることに気付きました。スキーム複数の値を返す方法
以下では、隣接ノードのすべての隣接ノードの複数の値を返したいと思います。ノードは角にある場合ので、座標(LおよびW + 1)の2つの値を返すこの場合
(define (neighbors l w)
(if (and (= 1 l) (= 1 w))
(list (and (l (+ 1 w))) (and (+ 1 l) w)))) ; how to output 2 or more values?
私は、第1の試験だ、(L + 1、W)は、基本的にIもし(1,2)と(2,1)を返します。
ノードに隣接するノードが1つしかない場合も同様です。この場合、3つの値があります。
エッジが近くにない場合は、4つの戻り値があります。
私は使用しようとしましたcons, append, list, display, write
それらのどれも追加の値で動作しているようです。私はthis questionのサブ機能としてこれを必要とします。戻り値を渡してそれを再帰的に使用して、すべての隣接ノードを返すように、実装する方法を教えてください。
編集:答えが見つかりました:キーワード「values
」を使用して複数の値を返します。例:あなたはコンスセルの値のペアを返すことができ
(define (store l w)
(values (write l)
(write w)
(newline)
(list (+ 1 w) l)
(list w (+ 1 l))))
あなたがあなた自身の質問に答えを投稿することができます知っていましたか? (Stack Overflowでポイントを取得するのが好きなら:) –
それを指摘してくれてありがとう、私はそれを行うことができないことを理解していませんでした – Jonathan