The comparison is also not really fair. The syntax-rules macro is doing a lot more. A simple syntax-rules macro just inserting everything in the leftmost position would loo something like
(define-syntax -> (syntax-rules () ((-> exp) exp) ((-> exp (proc args ...) rest ...) (-> (proc exp args ...) rest ...) ((-> exp proc rest ...) (-> (proc exp) rest ...)))) I wrote this here in the mail without testing, so no guarantees that it would work. It is simple enough. I think it should work. -- Linus Björnstam On Tue, 9 Jul 2019, at 01:02, Chris Vine wrote: > On Mon, 8 Jul 2019 23:10:28 +0200t > Zelphir Kaltstahl <zelphirkaltst...@gmail.com> wrote: > > Hello Chris and hello Mark, > > > > Thank you both for posting your macros! This is really useful and I am > > looking forward to using this in the next situation where there would be > > deep nesting or where it seems appropriate in other ways. > > > > To understand what is going on in the macro, I wrote a lot of explaining > > comments and uploaded it in a new repository, where I intend to keep > > macros I come across and explain them, if I can: > > > > https://gitlab.com/ZelphirKaltstahl/guile-scheme-macros/blob/master/threading-pipe-macro/macro.scm > > You are using the wrong macro, because the one you have chosen has been > revealed to be unhygienic. Either use the syntax-rules one (which is > the simplest) or the revised syntax-case macro. > >