はじめに 一般に、関数の返り値はひとつしかありません。複数の値を返す場合、昔の Lisp ではリストに格納して返すのが普通でした。この場合、返す側は必要なデータをリストに格納し、受け取る側はリストからデータを取り出す処理が必要になります。ところが、Scheme や Common Lisp の「多値 (multiple values)」という機能を使うと、複数の値を簡単にやり取りすることができます。 ●call-with-values と values Scheme で複数の値を受け取るには関数 call-with-value を使います。 call-with-values producer consumer call-with-values は producer を評価します。producer は引数のない関数で複数の値 (多値) を返します。call-with-value はそれをそのま