Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define-syntax define-syntax-cases
- (lambda (stx)
- (syntax-case stx ()
- [(_ name c* ...)
- #'(define-syntax name
- (lambda (x)
- (syntax-case x ()
- c* ...)))])))
- (define-syntax-cases compose
- [(_) #'values]
- [(_ f) #'f]
- [(_ f* ...)
- #`(lambda (a)
- #,(fold-left
- (lambda (acc f) #`(#,f #,acc))
- #'a #'(f* ...)))])
- (define-syntax-cases compose-values
- [(_) #'values]
- [(_ f) #'f]
- [(_ f f* ...)
- #`(lambda args
- #,(fold-left
- (lambda (acc f)
- #`(call-with-values (lambda () #,acc) #,f))
- #'(apply f args) #'(f* ...)))])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement