clara.rules.dsl

Implementation of the defrule-style DSL for Clara. Most users should simply use the clara.rules namespace.

build-query

(build-query name body)(build-query name body form-meta)

Function used to parse and build a query using the DSL syntax.

build-rule

(build-rule name body)(build-rule name body form-meta)

Function used to parse and build a rule using the DSL syntax.

destructuring-sym?

(destructuring-sym? sym)

local-syms

macro

(local-syms)

ops

parse-query

macro

(parse-query params lhs)

Macro used to dynamically create a new rule using the DSL syntax.

parse-query*

(parse-query* params lhs env)(parse-query* params lhs env query-meta)

Creates a query from the DSL syntax using the given environment map.

parse-rule

macro

(parse-rule lhs rhs)(parse-rule lhs rhs properties)

Macro used to dynamically create a new rule using the DSL syntax.

parse-rule*

(parse-rule* lhs rhs properties env)(parse-rule* lhs rhs properties env rule-meta)

Creates a rule from the DSL syntax using the given environment map. ns should be bound to the namespace the rule is meant to be defined in.

split-lhs-rhs

(split-lhs-rhs rule-body)

Given a rule with the =>, splits the left- and right-hand sides.