- 239 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 14:55:08 ]
- R6RS でも書いてみた。
(import (rnrs) (only (srfi :1) take list-index filter-map) (only (srfi :26) cut)) (define-syntax curry (lambda(x) (define (e a) (define s '(<1> <2> <3> <4> <5> <6> <7> <8> <9>)) (take s (+ 1 (apply max -1 (filter-map (lambda(p)(list-index (cut eq? p <>) s)) (syntax->datum a)))))) (syntax-case x () ((k t a ...) (with-syntax (((p ...) (datum->syntax #'k (e #'(a ...))))) #`(lambda (p ... . r) #,(syntax-case #'(a ...) (<...>) ((a ... <...>) #'(apply t a ... r)) (_ #'(t a ...)))))))))
|

|