(02define-syntax15 curried 15 (02syntax-rules15 () 15 [(02_15 ()15 10exp15 02...) 15 (02lambda15 args 15 (02if15 (10null?15 args) 15 (02begin15 10exp15 02...) 15 (10apply15 (02begin15 10exp15 02...)15 args)))] 15 [(02_15 (x15 x115 02...)15 10exp15 02...) 15 (02letrec15 ([rec15 (02case-lambda 15 [()15 rec] 15 [(x15 x115 02...)15 (02begin15 10exp15 02...)] 15 [(x15 x115 02...15 .15 10rest)15 (10apply15 (rec15 x15 x115 02...)15 10rest)] 15 [fewer-args 15 (02let15 ([waiting-for-more 15 (02lambda15 (rec15 fewer-args) 15 (02lambda15 more-args15 (10apply15 rec15 (10append15 fewer-args15 more-args))))]) 15 (waiting-for-more15 rec15 fewer-args))])]) 15 rec)] 15 [(02_15 (x15 x115 02...15 .15 10rest)15 10exp15 02...) 15 (02letrec15 ([rec15 (02case-lambda 15 [()15 rec] 15 [(x15 x115 02...15 .15 10rest)15 (02begin15 10exp15 02...)] 15 [fewer-args 15 (02let15 ([waiting-for-more 15 (02lambda15 (rec15 fewer-args) 15 (02lambda15 more-args15 (10apply15 rec15 (10append15 fewer-args15 more-args))))]) 15 (waiting-for-more15 rec15 fewer-args))])]) 15 rec)] 15 [(02_15 args15 10exp15 02...)15 (02lambda15 args15 10exp15 02...)])) (02define-syntax15 define-curried 15 (02syntax-rules15 () 15 [(02_15 (f15 .15 args)15 .15 body)15 (02define15 f15 (curried15 args15 .15 body))]))