gaucheで可変引数をとる
schemeの可変引数やってなかった。
関数
(define (inc . x) (print x) (print (map (cut + <> 1) x))) (inc 1 2 3 4) ;=>(1 2 3 4) ;=>(2 3 4 5)
lambda
lambdaの時どうやるんだろう?
((lambda x (print x)) 1 2 3) ;=>(1 2 3)
なるほど。単に()を外せばいいだけか。
マクロ
(define-syntax f (syntax-rules () ((_ x ...) (print x ...)))) (f 1 2 3 4) ;=>1234 (define-syntax f (syntax-rules () ((_ x ...) (print (list x ...))))) (f 1 2 3 4) ;=>(1 2 3 4)
後ろのやり方でいけばリストにできる