アカウント名:
パスワード:
-- cooper
うっかりcall-with-multi-valuesなんて名前にしちゃったが、引数の順序がcall-with-valuesとは違っている(意味的には逆になっている)から、別の名前にした方がいいんだよね。apply-multi-valuesとかも考えてみたけど、値に相当する部分にも手続きを渡すのがちょっとなぁ...
# というか、慣れないせいかもしれないけど、Schemeの多値って使いにくい
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy
マクロは良くわからないので (スコア:1)
(use srfi-11)
(define (main args)
(let-values ((a (values 1 2 3))
(b (values 4 5 6)))
(display (append a b))
(newline)))
効率的な例は、他の人に期待 ;-)
-- cooper
ちょっとやってみた (スコア:1)
(define (pa$-with-multi-values proc mv-proc-list)
(letrec-syntax
((pa$-with-values
(syntax-rules ()
((_ proc producer)
(call-with-values (lambda () producer) (lambda args (apply pa$ proc args)))))))
(if (null? mv-proc-list)
proc
(pa$-with-multi-values (pa$-with-values proc ((car mv-proc-list)))
Re:ちょっとやってみた (スコア:1)
うっかりcall-with-multi-valuesなんて名前にしちゃったが、引数の順序がcall-with-valuesとは違っている(意味的には逆になっている)から、別の名前にした方がいいんだよね。apply-multi-valuesとかも考えてみたけど、値に相当する部分にも手続きを渡すのがちょっとなぁ...
# というか、慣れないせいかもしれないけど、Schemeの多値って使いにくい