Skip to content

Commit

Permalink
Merge pull request 0xc1c4da#5 from rasom/rasom-deriver
Browse files Browse the repository at this point in the history
Multiple defrules
  • Loading branch information
0xc1c4da committed Mar 18, 2016
2 parents f867bec + 208b897 commit 6bd0ee6
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 20 deletions.
40 changes: 22 additions & 18 deletions src/nal/deriver/rules.clj
Original file line number Diff line number Diff line change
Expand Up @@ -119,22 +119,26 @@

(defmacro defrules
"Define rules. Rules must be #R statements."
;TODO exception on duplication of the rule
[name & rules]
`(time
(let [rules# (rules->> (quote ~rules)
contains-list? generate-all-lists
contains-list? generate-all-lists
identity rule
order-for-all-same? generate-all-orders
allow-swapping? swap
allow-backward? expand-backward-rules)
judgement-rules# (check-duplication (filter judgement? rules#))
question-rules# (check-duplication (filter question? rules#))
goal-rules# (check-duplication (filter goal? rules#))]
(println "Q rules:" (count question-rules#))
(println "J rules:" (count judgement-rules#))
(println "G rules:" (count goal-rules#))
(def ~name {:judgement (rules-map judgement-rules# :judgement)
:question (rules-map question-rules# :question)
:goal (rules-map goal-rules# :goal)}))))
`(def ~name (quote ~rules)))

(defn compile-rules
;TODO exception on duplication of the rule
[& rules]
(time
(let [rules (rules->> (apply concat rules)
contains-list? generate-all-lists
contains-list? generate-all-lists
identity rule
order-for-all-same? generate-all-orders
allow-swapping? swap
allow-backward? expand-backward-rules)
judgement-rules# (check-duplication (filter judgement? rules))
question-rules# (check-duplication (filter question? rules))
goal-rules# (check-duplication (filter goal? rules))]
(println "Q rules:" (count question-rules#))
(println "J rules:" (count judgement-rules#))
(println "G rules:" (count goal-rules#))
{:judgement (rules-map judgement-rules# :judgement)
:question (rules-map question-rules# :question)
:goal (rules-map goal-rules# :goal)})))
6 changes: 4 additions & 2 deletions src/nal/rules.clj
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
(ns nal.rules
(:require [nal.deriver.rules :refer [defrules]]
(:require [nal.deriver.rules :refer [defrules compile-rules]]
nal.reader))

(declare --S S --P P <-> |- --> ==> M || && =|> -- A Ai B <=>)

(defrules rules
(defrules all-rules
;Similarity to Inheritance
#R[(S --> P) (S <-> P) |- (S --> P) :post (:t/struct-int :p/judgement) :pre (:question?)]
;Inheritance to Similarity
Expand Down Expand Up @@ -451,6 +451,8 @@
#R[(|| B :list/A) B |- (|| B :list/A) :pre (:question?) :post (:t/belief-structural-deduction :p/judgement)]
)

(def rules (compile-rules all-rules))

(defn freq [task-type]
"Check frequency"
(into {} (map (fn [[k v]] [(str k) (count (:rules v))]) (task-type rules))))
Expand Down

0 comments on commit 6bd0ee6

Please sign in to comment.