or と 多値の評価

不思議な現象を発見しました。

下のように1つだけの多値(multiple values)を or で評価すると、結果は、1,2(多値)となりました。

(or (values 1 2))
1
2

しかし、2つの多値を or で評価すると、結果は、1 になりました。

(or (values 1 2) (values 3 4))
1

clispでもxyzzyでも同様でした。

hyperspec で or を見ると、最後の要素以外は、primary value(最初の値)を返す仕様のようでした。

(or nil (values 1 2))
1
2

んー、嵌った。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください