Meme ↔ Clojure as collapsar pipelines.
Two pipelines: meme->clj: meme text → tokenize → tree → [m→s rules] → transform → clj text clj->meme: clj text → read → [s→m rules] → meme text
The rule phases are collapsar phases with head analysis and verification. The procedural phases wrap tokenizer, tree builder, and emitters.
Meme ↔ Clojure as collapsar pipelines. Two pipelines: meme->clj: meme text → tokenize → tree → [m→s rules] → transform → clj text clj->meme: clj text → read → [s→m rules] → meme text The rule phases are collapsar phases with head analysis and verification. The procedural phases wrap tokenizer, tree builder, and emitters.
(clj->meme clj-src)Convert Clojure source string to meme source string via collapsar pipeline. JVM/Babashka only — requires Clojure reader.
Convert Clojure source string to meme source string via collapsar pipeline. JVM/Babashka only — requires Clojure reader.
Collapsar pipeline: Clojure forms → meme source. Phases: s→m rules → rewrite inside RCs → emit meme.
Collapsar pipeline: Clojure forms → meme source. Phases: s→m rules → rewrite inside RCs → emit meme.
(clj->meme-traced clj-src)Convert clj→meme with full pipeline trace.
Convert clj→meme with full pipeline trace.
Procedural: m-call tagged forms → meme source string.
Procedural: m-call tagged forms → meme source string.
Procedural: expand syntax-quote AST nodes to plain Clojure forms. Required for forms->clj since Clojure has no backtick form.
Procedural: expand syntax-quote AST nodes to plain Clojure forms. Required for forms->clj since Clojure has no backtick form.
Procedural: Clojure forms → Clojure source string.
Procedural: Clojure forms → Clojure source string.
(inspect)Inspect both pipelines: phases, signatures, verification.
Inspect both pipelines: phases, signatures, verification.
Rule phase: flatten m-call and paren tags to S-expressions. Head-eliminating: consumes m-call/paren, produces dynamic heads only.
Rule phase: flatten m-call and paren tags to S-expressions. Head-eliminating: consumes m-call/paren, produces dynamic heads only.
(meme->clj meme-src)(meme->clj meme-src opts)Convert meme source string to Clojure source string via collapsar pipeline. opts supports :read-cond :preserve to preserve reader conditionals.
Convert meme source string to Clojure source string via collapsar pipeline. opts supports :read-cond :preserve to preserve reader conditionals.
Default meme→clj pipeline (evaluates reader conditionals).
Default meme→clj pipeline (evaluates reader conditionals).
(meme->clj-traced meme-src)(meme->clj-traced meme-src opts)Convert meme→clj with full pipeline trace.
Convert meme→clj with full pipeline trace.
Procedural: apply S→M tagging inside ReaderConditional branch values. The collapsar rewrite engine doesn't descend into ReaderConditionals, so this step ensures calls inside #?(:clj ...) branches get tagged.
Procedural: apply S→M tagging inside ReaderConditional branch values. The collapsar rewrite engine doesn't descend into ReaderConditionals, so this step ensures calls inside #?(:clj ...) branches get tagged.
Rule phase: tag S-expression calls as m-call nodes. Guard ensures only symbol/keyword-headed lists are tagged, and prevents re-tagging already-tagged nodes.
Rule phase: tag S-expression calls as m-call nodes. Guard ensures only symbol/keyword-headed lists are tagged, and prevents re-tagging already-tagged nodes.
Procedural: meme source string → vector of tagged tree forms. Combines tokenization and tree building in one step.
Procedural: meme source string → vector of tagged tree forms. Combines tokenization and tree building in one step.
Default transform-structures phase (evaluate reader conditionals).
Default transform-structures phase (evaluate reader conditionals).
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |