(children node)
Return a sequential? of all children of node.
Return a sequential? of all children of node.
(consolidate-with node)
Collapse all :wth nodes into a single :wth node.
Collapse all :wth nodes into a single :wth node.
(defsyntax name doc-string? attr-map? [params*] prepost-map? body)
(defsyntax name doc-string? attr-map? ([params*] prepost-map? body) + attr-map?)
(defsyntax & defn-args)
(expand-form form env)
Expand form
with respect to env
if possible. Returns the result
of expanding form
or form
unchanged.
Expand `form` with respect to `env` if possible. Returns the result of expanding `form` or `form` unchanged.
(expander-registry env)
Return the ::expander-registry
of the environment env
or nil
if it cannot be found.
Return the `::expander-registry` of the environment `env` or `nil` if it cannot be found.
(fold f value node)
Same as clojure.core/reduce but specifically for ASTs. f must be a binary (arity 2) function and will receive as arguments the current accumulated value and an AST node. fold is eager and will visit each subnode in node.
Same as clojure.core/reduce but specifically for ASTs. f must be a binary (arity 2) function and will receive as arguments the current accumulated value and an AST node. fold is eager and will visit each subnode in node.
(ground? node)
true if node is ground i.e. it contains no variables or is not a match operator.
true if node is ground i.e. it contains no variables or is not a match operator.
(literal? node)
true if node is ground and does not contain :map or :set subnodes, false otherwise.
The constraint that node may not contain :map or :set subnodes is due to the semantics of map and set patterns: they express submap and subsets respectively. Compiling these patterns to literals as part of an equality check would result in false negative matches.
true if node is ground and does not contain :map or :set subnodes, false otherwise. The constraint that node may not contain :map or :set subnodes is due to the semantics of map and set patterns: they express submap and subsets respectively. Compiling these patterns to literals as part of an equality check would result in false negative matches.
(logic-variables node)
Return all :lvr nodes in node.
Return all :lvr nodes in node.
(make-ref-map node)
If node is a node repesenting a with pattern, return a map from reference to pattern node derived from it's bindings, otherwise return an empty map.
If node is a node repesenting a with pattern, return a map from reference to pattern node derived from it's bindings, otherwise return an empty map.
(max-length node)
The maximum possible length the pattern described by node
can
be. Note, this multimethod will throw an error whenever node
does
not have a method to handle it. This behavior is intentional as the
implementations should only exist for things which have can have
length. The max-length?
predicate can be used to detect if node
implements max-length
.
The maximum possible length the pattern described by `node` can be. Note, this multimethod will throw an error whenever `node` does not have a method to handle it. This behavior is intentional as the implementations should only exist for things which have can have length. The `max-length?` predicate can be used to detect if `node` implements `max-length`.
(max-length? x)
true if x
implements max-length
, false otherwise.
true if `x` implements `max-length`, false otherwise.
(memory-variables node)
Return all :mvr nodes in node.
Return all :mvr nodes in node.
(min-length node)
The minimum possible length the pattern described by node
can be.
Note, this multimethod will throw an error whenever node
does not
have a method to handle it. This behavior is intentional as the
implementations should only exist for things which have can have
length. The min-length?
predicate can be used to detect if node
implements min-length
.
The minimum possible length the pattern described by `node` can be. Note, this multimethod will throw an error whenever `node` does not have a method to handle it. This behavior is intentional as the implementations should only exist for things which have can have length. The `min-length?` predicate can be used to detect if `node` implements `min-length`.
(min-length? x)
true if x
implements min-length
, false otherwise.
true if `x` implements `min-length`, false otherwise.
(parse form)
(parse form env)
Parse form
into an abstract syntax tree (AST) optionally with
respect to the environment env
.
(parse '(?x1 ?x2 :as ?xs)) ;; => {:tag :seq :as {:tag :lvr :symbol ?xs} :prt {:tag :prt :left {:tag :cat :elements ({:tag :lvr :symbol ?x1} {:tag :lvr :symbol ?x2})} :right {:tag :cat :elements []}}}
Parse `form` into an abstract syntax tree (AST) optionally with respect to the environment `env`. (parse '(?x1 ?x2 :as ?xs)) ;; => {:tag :seq :as {:tag :lvr :symbol ?xs} :prt {:tag :prt :left {:tag :cat :elements ({:tag :lvr :symbol ?x1} {:tag :lvr :symbol ?x2})} :right {:tag :cat :elements []}}}
(parse-all forms env)
Apply parse
to all forms in the sequence forms
.
Apply `parse` to all forms in the sequence `forms`.
(parse-seq xs env)
Parses a seq? into a :meander.syntax.epsilon/node.
seqs? of the following form are handled specially, all other seqs are parsed as :seq nodes.
(quote <form>) (clojure.core/unquote <form>) (clojure.core/unquote-splicig <form>) (<symbol*> <form_0> ... <form_n>)
where symbol* is a fully qualified symbol with respect to the current namespace.
Parses a seq? into a :meander.syntax.epsilon/node. seqs? of the following form are handled specially, all other seqs are parsed as :seq nodes. (quote <form>) (clojure.core/unquote <form>) (clojure.core/unquote-splicig <form>) (<symbol*> <form_0> ... <form_n>) where symbol* is a fully qualified symbol with respect to the current namespace.
(parser-registry env)
Return the ::parser-registry
of the environment env
or nil
if
it cannot be found.
Return the `::parser-registry` of the environment `env` or `nil` if it cannot be found.
(postwalk-replace smap form)
Same as clojure.walk/postwal-replace but for AST nodes.
Same as clojure.walk/postwal-replace but for AST nodes.
(prewalk-replace smap form)
Same as clojure.walk/prewalk-replace but for AST nodes.
Same as clojure.walk/prewalk-replace but for AST nodes.
(proper-subnodes node)
Return the all subnodes in node excluding node.
Return the all subnodes in node excluding node.
(ref-node? x)
true if x is a :ref node, false otherwise.
true if x is a :ref node, false otherwise.
(references node)
Return all :ref nodes in node.
Return all :ref nodes in node.
(rename-refs node)
Give all distinct :ref nodes a unique :symbol.
Give all distinct :ref nodes a unique :symbol.
(resolve-expander sym env)
Return the ::expander
associated with sym
with respect to the
environment env
.
Return the `::expander` associated with `sym` with respect to the environment `env`.
(resolve-parser sym env)
Return the ::parser
associated with sym
with respect to the
environment env
.
Return the `::parser` associated with `sym` with respect to the environment `env`.
(search? node)
true if node represents a search, false otherwise.
true if node represents a search, false otherwise.
(subnodes node)
Return a sequence of all subnodes of node.
Return a sequence of all subnodes of node.
(substitute-refs node)
(substitute-refs node ref-map)
Given node and an optional ref-map
Given node and an optional ref-map
(unparse node)
In pre-order fashion rewrite a node into a Clojure form.
In pre-order fashion rewrite a node into a Clojure form.
(variable-length? node)
true if node may have a variable length, false otherwise. Note this function will throw an error if node does not implement methods for both min-length and max-length.
true if node may have a variable length, false otherwise. Note this function will throw an error if node does not implement methods for both min-length and max-length.
(variables node)
Return all :lvr and :mvr nodes in node.
Return all :lvr and :mvr nodes in node.
(walk inner outer node)
Same as clojure.walk/walk but for AST nodes.
Same as clojure.walk/walk but for AST nodes.
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close