wolf writes: >> 1. You bind 'foo' to the syntax transformer. >> >> 2. During the compilation of (foo y), the compiler calls the syntax transformer to >> affect the generation of code, so it will do the right thing. > > Interesting, I think I understand the difference. So in some ways this can be > compared to the C pre-processor? Is there a way to view the resulting code > after all the transformations were applied? In the guile shell you can use ,expand (foo 1) to see what it expands to. Also see ,h compile > Meaning that if I want to use the many guile- libraries available under guix > and elsewhere, the most pragmatic approach would be to just not care about R6RS > vs R7RS all that much, and just do what guile manual recommends. Correct? R7RS vs. R6RS isn’t that big of a difference in Guile, because it mostly supports both and you can mostly use either of them. R7RS is cleaner is some ways and managed to re-unite some of the Scheme implementations (that were split between R5RS and R6RS). So knowing R7RS means that you can make your code run in a much larger number of domains, and you can keep many of your skills even when moving from mostly server-side webdev (i.e. Chicken or Guile¹) to embedded (Chibi), or to shipping binaries(i.e. Gambit or bigloo), or even Java/JWM (kawa), or to others (see https://ecraven.github.io/r7rs-benchmarks/). Why Guile? https://www.draketo.de/software/guile-10x Why others? https://wingolog.org/archives/2013/01/07/an-opinionated-guide-to-scheme-implementations ¹: partially moving into clientside via Guilescript or others: https://www.draketo.de/software/wisp#guilescript-2023-01-10 https://srfi-email.schemers.org/schemeweb/msg/11606995/ https://github.com/schemeweb/wiki/wiki/frontend Also Spritely started working on Guile on WebAssembly: https://spritely.institute/news/guile-on-web-assembly-project-underway.html Best wishes, Arne -- Unpolitisch sein heißt politisch sein, ohne es zu merken. draketo.de