[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
srfi-11
- Let-values 二つのマクロ、let-values
と let*-values
を定義しています。
これらは、多値とともに利用すると便利です。([SRFI-11])
[SRFI-11]
vars は変数のリストです。expr は評価され、最初の返り値は、
vars の最初の変数に束縛されます。二番目の返り値は、vars の
二番目の変数に束縛され、以下同様です。そのあと、body が評価されます。
expr のスコープは let
と同様に、let-values
の
外側になります。
(let-values (((a b) (values 1 2)) ((c d) (values 3 4))) (list a b c d)) ⇒ (1 2 3 4) (let ((a 1) (b 2) (c 3) (d 4)) (let-values (((a b) (values c d)) ((c d) (values a b))) (list a b c d))) ⇒ (3 4 1 2) |
vars lambda パラメータと同様に、ドット付リストでも、 単一のシンボルでもかまいません。
(let-values (((x . y) (values 1 2 3 4))) y) ⇒ (2 3 4) (let-values ((x (values 1 2 3 4))) x) ⇒ (1 2 3 4) |
expr によって返された値の数と vars が期待する数とが一致しない 場合にはエラーになります。
[SRFI-11]
let-values
と同じですが、各 expr のスコープが先行する vars
を含みます。
(let ((a 1) (b 2) (c 3) (d 4)) (let*-values (((a b) (values c d)) ((c d) (values a b))) (list a b c d))) ⇒ (3 4 3 4) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.