#lang scheme/base
(require
"../tools.ss")
(provide
(all-from-out "../tools.ss"))
(require/provide
"../ns.ss"
"../scat.ss"
"../sig.ss"
"../op.ss"
"pattern.ss"
"pattern-meta.ss"
"pattern-runtime.ss"
"macro-utils.ss"
"rpn-macro.ss"
"macro-eval.ss"
"op.ss" "../target.ss"
"target-scat.ss" )
(provide (all-defined-out))
(define (list->macro glue lst)
(scat-compose
(map (lambda (el) (macro: ',el ,glue)) lst)))
(define (stack->macro s)
(apply compose (map (lambda (x) (macro: ',x)) s)))
(define macro-word? word?)
(define-syntax-rule (table: separator (item ...))
(macro: ,(macro: item separator) ...))
(define (macro-table separator lst)
(scat-compose
(map (lambda (x)
(macro: ',x ,separator))
lst)))