(compiling-cljs?)
Return true if we are currently generating cljs code. Useful because cljx does not provide a hook for conditional macro expansion.
Return true if we are currently generating cljs code. Useful because cljx does not provide a hook for conditional macro expansion.
(define & forms)
Prolog-style rule.
(define [?e :derived-fact ?v] :- [[?e :my-fact ?v]])
Head/consequence is declared first followed by body/conditions. Uses :- as separator. Name is auto-generated. Auto-assigned to default activation group. Inserts are always logical. Does not support non-DSL syntax (e.g. println, let).
Prolog-style rule. (define [?e :derived-fact ?v] :- [[?e :my-fact ?v]]) Head/consequence is declared first followed by body/conditions. Uses :- as separator. Name is auto-generated. Auto-assigned to default activation group. Inserts are always logical. Does not support non-DSL syntax (e.g. println, let).
(defquery name & body)
Clara's defquery with precept DSL.
(defquery my-query [:v] [?fact <- [_ :my-fact ?v]])
Defines a named query that can be called with Clara's query
function with optional
arguments.
Clara's defquery with precept DSL. (defquery my-query [:v] [?fact <- [_ :my-fact ?v]]) Defines a named query that can be called with Clara's `query` function with optional arguments.
(defsub kw & body)
Defines subscription response.
(defsub :my-sub-name [[_ :my-fact ?v]] => {:my-fact ?v})
sub-name - keyword of subscription registered with subscribe
LHS - any valid LHS syntax
RHS - a hash-map to be passed to subscribers of sub-name
Defines subscription response. (defsub :my-sub-name [[_ :my-fact ?v]] => {:my-fact ?v}) sub-name - keyword of subscription registered with `subscribe` LHS - any valid LHS syntax RHS - a hash-map to be passed to subscribers of sub-name
(session name & sources-and-options)
Defines a session.
(session my-session 'my-proj/my-ns :db-schema my-schema)
Accepts same arguments as Clara's defsession plus :db-schema and :client-schema options. Rules and queries are loaded from the provided namespace. To load rules from multiple namespaces, a vector of namespaces may be provided.
:db-schema - Datomic-format schema for persistent facts. Precept enforces cardinality and uniqueness similarly to Datomic. All facts are treated as non-unique and one-to-one cardinality by default.
:client-schema - Datomic-format schema for non-perstent facts. Precept enforces cardinality and uniqueness for attributes in this schema the same way it does for :db-schema. It serves two main purposes. 1. To define client-side facts as one-to-many or unique. 2. To allow Precept's API to filter out facts that should not be persisted when writing to a database.
Defaults:
:fact-type-fn
- :a
Tells Clara to index facts by attribute. This is the preferred :fact-type-fn option for
working with eav tuples.
:ancestors-fn
- util/make-ancestors-fn
If :db-schema and/or :client-schema are provided, uses Clojure's make-hierarchy
and
derive
functions to assign cardinality and uniqueness for each provided attribute.
When no schemas are provided, all facts will be descendents of #{:all :one-to-one}.
Because all facts descend from :all
, rules written with the :all
attribute can
match facts independently of their attributes.
:activation-group-fn
- (util/make-activation-group-fn :calc)
Allows categorization and prioritization of some rules over others. Puts a rule into a
prioritization group according to the optional first argument to rule.
Assigns the default values {:group :calc :salience 0 :super false}
to rules where the
without these arguments.
argument to rule. :salience determines precedence within the same group.
Rules marked :super are active across all groups.
:activation-group-sort-fn
- (util/make-activation-group-fn [:action :calc :report :cleanup])
Determines the scheme by which some rules are given priority over others. Rules in the
:action
group will be given the chance to fire before rules in the :calc
group and so on.
When determining the priority of two rules in the same group, the :salience property
serves as a tiebreaker, with higher salience rules receiving precedence over lower salience ones.
Defines a session. (session my-session 'my-proj/my-ns :db-schema my-schema) Accepts same arguments as Clara's defsession plus :db-schema and :client-schema options. Rules and queries are loaded from the provided namespace. To load rules from multiple namespaces, a vector of namespaces may be provided. :db-schema - Datomic-format schema for persistent facts. Precept enforces cardinality and uniqueness similarly to Datomic. All facts are treated as non-unique and one-to-one cardinality by default. :client-schema - Datomic-format schema for non-perstent facts. Precept enforces cardinality and uniqueness for attributes in this schema the same way it does for :db-schema. It serves two main purposes. 1. To define client-side facts as one-to-many or unique. 2. To allow Precept's API to filter out facts that should not be persisted when writing to a database. Defaults: `:fact-type-fn` - `:a` Tells Clara to index facts by attribute. This is the preferred :fact-type-fn option for working with eav tuples. `:ancestors-fn` - `util/make-ancestors-fn` If :db-schema and/or :client-schema are provided, uses Clojure's `make-hierarchy` and `derive` functions to assign cardinality and uniqueness for each provided attribute. When no schemas are provided, all facts will be descendents of #{:all :one-to-one}. Because all facts descend from `:all`, rules written with the `:all` attribute can match facts independently of their attributes. `:activation-group-fn` - `(util/make-activation-group-fn :calc)` Allows categorization and prioritization of some rules over others. Puts a rule into a prioritization group according to the optional first argument to rule. Assigns the default values `{:group :calc :salience 0 :super false}` to rules where the without these arguments. argument to rule. :salience determines precedence within the same group. Rules marked :super are active across all groups. `:activation-group-sort-fn` - `(util/make-activation-group-fn [:action :calc :report :cleanup])` Determines the scheme by which some rules are given priority over others. Rules in the `:action` group will be given the chance to fire before rules in the `:calc` group and so on. When determining the priority of two rules in the same group, the :salience property serves as a tiebreaker, with higher salience rules receiving precedence over lower salience ones.
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close