I inform that I eventually resigned from publishing the "publish" form, as it might be considered too idiosyncratic to some (mostly in its implementation). It now exports exactly 9 bindings, 7 of which are the core bindings (lambda, define, define-syntax, let, let*, let-syntax, letrec-syntax), one which replaces the srfi-2 and-let* whith a pattern matching one, and one which simply re-exports match from (ice-9 match). The main novelty is that I allowed a new usage of define-syntax and let*-syntax variants, as suggested by Taylan. In addition to (define-syntax (foo a b) (bar b a)) (which can be used in place of "define-syntax-rule"), one can also use it as (define-syntax new-syntax keywords (pattern template) ...) which will expand to (define-syntax new-syntax (syntax-rules keywords (pattern template) ...)) The same applies to let-syntax and letrec-syntax. The latest version can be found here: https://bitbucket.org/panicz/slayer/src/42956355fc0aaab3c5b4897be3e37bbbf7f0963b/guile-modules/ice-9/nice-9.scm?at=default HF