package.lisp @ fdb771cc2b8c

Start working on L2

This changes the compilation process to keep track of register types, which
we'll need to distinguish between local/permanent variables.  It also makes
things a bit more obvious/safe when compiling argument registers because they're
tagged explicitly.

This also changes up the actual running of the code by actually using
CALL/PROCEED, though it's not fully fleshed out yet.
author Steve Losh <steve@stevelosh.com>
date Wed, 13 Apr 2016 17:38:57 +0000
parents e29b793a6e91
children d16b5b360398
(defpackage #:bones
  (:use #:cl)
  (:export #:hello))

(defpackage #:bones.utils
  (:use #:cl
        #:defstar
        #:bones.quickutils)
  (:export
    #:vector-push-extend-all
    #:push-if-new))

(defpackage #:bones.wam
  (:use #:cl
        #:defstar
        #:optima
        #:cl-arrows
        #:bones.quickutils
        #:bones.utils)
  (:import-from #:optima #:match)
  (:shadowing-import-from #:cl-arrows #:->))

(defpackage #:bones.paip
  (:use #:cl #:defstar #:bones.quickutils)
  (:documentation "Test?")
  (:export

   ;; Unification, constants
   #:unify
   #:fail #:no-bindings
   #:*check-occurs*

   ;; Destructive unification
   #:unify!
   #:unbound
   #:bound-p

   ;; Database management
   #:clear-db
   #:clear-predicate
   #:fact
   #:rule
   #:add-fact
   #:rule-fact

   ;; Lisp data structures as results
   #:return-one
   #:return-all

   ;; Interactive queries
   #:query
   #:query-one
   #:query-all
   ))