Gauche > Archives > 2024/09/05(use gauche.generator)
(define (restrict-arity proc n)
(let ((argument-list (generator->list gensym n)))
((eval
`(lambda (p)
(lambda ,argument-list
(p ,@argument-list)))
(find-module 'gauche))
proc)))
(define (foo . p) "foo") ; 可変長の手続き
(define bar (restrict-arity foo 3)) ; アリティを制限
(bar 1 2 3) ; これは OK
(bar 1 2 3 4) ; これは NG#