On Apr 1, 2010, at 2:22 PM, Gary Byers wrote:
> Without knowing what (FILE-ENABLE-SQL-READER-SYNTAX) does, how would anyone
> know what the problem is ? (I can guess that it tries to enable some reader
> macros, but I don't know how it tries to do that.)
>
> If whatever the problem is might be a bug in CCL 1.3, have you tried 1.4 to see
> if the problem persists ?
The same problem occurs in 1.4. Why would this work with SBCL from Slime and from both from the REPL, but not from Slime with ccl64?
Thanks,
Patrick
>
> On Thu, 1 Apr 2010, Patrick May wrote:
>
>> [ Adding OpenMCL-devel, since CCL seems to be involved somehow in this problem. ]
>>
>> On Apr 1, 2010, at 10:32 AM, Nathan Bird wrote:
>>> On 4/1/2010 9:41 AM, Patrick May wrote:
>>>>
>>>> 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?
>>>
>>> I've only really worked with SBCL so there might be something different
>>> in the implementations, but yes the square bracket reader syntax works
>>> fine for me under slime.
>>
>> Interesting. I tried this with SBCL and it worked. Why would ccl64 behave differently? (Code below.)
>>
>> 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)
>>
>>