Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.71 KB | None | 0 0
  1.   (define-syntax define-syntax-cases
  2.     (lambda (stx)
  3.       (syntax-case stx ()
  4.         [(_ name c* ...)
  5.          #'(define-syntax name
  6.              (lambda (x)
  7.                (syntax-case x ()
  8.                  c* ...)))])))
  9.  
  10.   (define-syntax-cases compose
  11.     [(_) #'values]
  12.     [(_ f) #'f]
  13.     [(_ f* ...)
  14.      #`(lambda (a)
  15.          #,(fold-left
  16.              (lambda (acc f) #`(#,f #,acc))
  17.              #'a #'(f* ...)))])
  18.  
  19.  
  20.   (define-syntax-cases compose-values
  21.     [(_) #'values]
  22.     [(_ f) #'f]
  23.     [(_ f f* ...)
  24.       #`(lambda args
  25.           #,(fold-left
  26.               (lambda (acc f)
  27.                 #`(call-with-values (lambda () #,acc) #,f))
  28.               #'(apply f args) #'(f* ...)))])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement