main.scrbl (1153B)
1 #lang scribble/manual 2 3 @(require "private/doc-util.rkt") 4 5 @title{Generic Syntax Expanders} 6 @defmodule[generic-syntax-expanders] 7 @author[@author+email["Jack Firth" "jackhfirth@gmail.com"]] 8 9 This library provides forms to define @italic{generic syntax 10 expanders}. These are essentially macros that have no meaning 11 on their own, but other macros can be told to expand all 12 generic syntax expanders of some type in some portion of 13 their body before themselves expanding. This is similar to 14 how Racket's built in @racket[match] form has @italic{match 15 expanders}, which allows the grammar of the @racket[match] 16 form to be extended with custom match expanders using 17 @racket[define-match-expander]. This library generalizes 18 the concept, making complex macros more composable and 19 extensible. 20 21 @source-code{https://github.com/jackfirth/generic-syntax-expanders} 22 23 @include-section["private/expanders.scrbl"] 24 @include-section["private/expander-types.scrbl"] 25 @include-section["private/define-expanders.scrbl"] 26 @include-section["private/scoped-transformers.scrbl"] 27 @include-section["private/define-scoped-transformers.scrbl"] 28 @include-section["private/reqprov.scrbl"]