Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save johanlindberg/323700 to your computer and use it in GitHub Desktop.
Save johanlindberg/323700 to your computer and use it in GitHub Desktop.
CL-USER> (macroexpand-1 '(defrule foo
(?o (o (a ?a (evenp ?a))))
(?p (p (a ?a)))
=>
(print ?a)))
(PROGN
(COMPILE-LHS FOO FOO-PRODUCTION (?O (O (A ?A (EVENP ?A)))) (?P (P (A ?A))))
(MAKE-OBJECT-TYPE-NODE)
(MAKE-PRODUCTION-NODE 'FOO-PRODUCTION)
(COMPILE-RHS FOO (PRINT ?A)))
T
CL-USER> (macroexpand-1 '(COMPILE-LHS FOO FOO-PRODUCTION (?O (O (A ?A (EVENP ?A)))) (?P (P (A ?A)))))
(PROGN
(COMPILE-PATTERN-CE FOO 1 FOO2 (P (A ?A)))
(COMPILE-PATTERN-CE FOO 0 FOO1 (O (A ?A (EVENP ?A)))))
T
CL-USER> (macroexpand-1 '(COMPILE-PATTERN-CE FOO 0 FOO1 (O (A ?A (EVENP ?A)))))
(PROGN
(MAKE-ALPHA-NODE 'FOO 0 '(AND (EVENP ?A)))
(MAKE-BETA-NODE 'FOO 0 'FOO1
'(AND (EQUALP (P-A (NTH 1 TOKEN)) (O-A (NTH 0 TOKEN))))))
T
CL-USER> (macroexpand-1 '(MAKE-ALPHA-NODE 'FOO 0 '(AND (EVENP ?A))))
(DEFUN FOO0 (KEY FACT TIMESTAMP)
(WHEN (AND (EVENP ?A))
(STORE KEY TOKEN 'FOO0-ALPHA-MEMORY)
(FOO0-RIGHT KEY TOKEN TIMESTAMP)))
CL-USER>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment