Slime, CLSQL, and reader macros

Patrick May <[email protected]>
Newsgroups gmane.lisp.clsql.general,gmane.lisp.slime.devel
Message-ID <[email protected]>
	This is a follow up to a question I asked recently on the CLSQL list.  I think the problem is my mental model of Slime.

	My environment is OS X 10.6.3, Clozure 1.3-r12755M, PostgreSQL 8.4.1, and CLSQL 5.0.5.

	My problem is with the CLSQL square bracket syntax in Slime.  If I run the code below from a REPL started at the command line, it works fine.  I can use either the file-enable-sql-reader-syntax or the locally-enable-sql-reader-syntax / restore-sql-reader-syntax-state pair fine.  When I evaluate the same code in Slime with C-x C-e or C-c C-r, however, I get this error when defining add-customer:

;Compiler warnings :
;   In ADD-CUSTOMER: Undeclared free variable [=
;   In ADD-CUSTOMER: Undeclared free variable [ID]
;   In ADD-CUSTOMER: Undeclared free variable ID]

and this error when trying to add a customer object:

Unbound variable: [=
   [Condition of type UNBOUND-VARIABLE]

This happens with either way of enabling the square bracket syntax.

	Am I misunderstanding something fundamental about Slime?  Has anyone managed to use Slime for CLSQL development with the square bracket syntax?

Thanks,

Patrick

(in-package :common-lisp-user)

(defpackage :clsql-testing
  (:use :common-lisp
        :clsql))

(in-package :clsql-testing)

(file-enable-sql-reader-syntax)

;(locally-enable-sql-reader-syntax)

(def-view-class customer ()
  ((id :db-kind :key
       :db-constraints :not-null
       :initarg :id
       :reader id
       :type integer)
   (name :db-constraints :not-null
         :initarg :name
         :reader name
         :type string)
   (phone-number :db-constraints :not-null
                 :initarg :phone-number
                 :accessor phone-number
                 :type string))
  (:base-table "test_customer"))

(defconstant +id-sequence+ "id_sequence")

(defun add-customer (name phone-number)
  "Add a customer."
  (let ((id (sequence-next +id-sequence+)))
    (update-records-from-instance
     (make-instance 'customer
                    :id id
                    :name name
                    :phone-number phone-number))
    (first (select 'customer :where [= [id] id] :flatp t))))

(connect '("localhost" "db-name" "user" "password")
         :database-type :postgresql-socket
         :if-exists :new
         :pool t)

(defparameter customer-foo (add-customer "Test Customer Foo" "0123456789"))
(id customer-foo)

;(restore-sql-reader-syntax-state)
(disconnect-pooled)

_______________________________________________
CLSQL mailing list
[email protected]
http://lists.b9.com/cgi-bin/mailman/listinfo/clsql
smime.p7s (application/pkcs7-signature, 2.4 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.