Skip to content

Instantly share code, notes, and snippets.

@belmarca
Last active August 20, 2019 14:16
Show Gist options
  • Save belmarca/dfb59f9a28e6d76e57c371c2f5e9b2b9 to your computer and use it in GitHub Desktop.
Save belmarca/dfb59f9a28e6d76e57c371c2f5e9b2b9 to your computer and use it in GitHub Desktop.
Gerbil scheme reverse syntax macro
(defsyntax (reverse-me stx)
(syntax-case stx ()
((macro . args)
(with-syntax ()
(datum->syntax #'macro (reverse (syntax->datum #'args)))))))
;; > (reverse-me "backwards" "am" "I" values)
;; "I"
;; "am"
;; "backwards"
@belmarca
Copy link
Author

This is shorter:

(defsyntax (reverse-me stx)
  (datum->syntax #'stx (reverse (cdr (syntax->datum stx)))))

;; > (reverse-me "backwards" "am" "I" values)
;; "I"
;; "am"
;; "backwards"

@vyzo
Copy link

vyzo commented Aug 20, 2019

this is slightly wrong, the correct from is

(defsyntax (reverse-me stx)
  (reverse (cdr (syntax->list stx))))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment