[plt-scheme] arg. very bizarre behavior...
i think i'm having some issue related to combining schemeql and web
servlets and not knowing really what i'm doing. the wierd behavior i'm
getting is this:
the following is a snipset from schemeql's format-predicate
(define format-predicate
(lambda (pred)
(unless (pair? pred)
(raise (make-schemeql-bad-predicate-spec
pred
"Bad format for predicate")))
(let ((op (car pred))
(len (length pred)))
(printf "~s~n~s~n~s~n~s~n" pred op (equal? op 'AND) len)
. . .
so when this is passed the string (AND (= VALID 1) (= FIELD 2)), the
printf is printing out this
(AND (= VALID 1) (= FIELD 2))
AND
#f
3
(the key line is the #f which is saying AND != AND... i've checked AND
with symbol? and i get true... (same for eq?, of course)
so this strange behavior does not occur when i run this database code from
within dr. scheme outside of the PLT web-servlet code... so here is the
code to that page ... perhaps someone more knowledgeable can point out the
glaring error i have, perhaps, linking everything together (quite honestly
, i'm confused about whether i need a compound-unit/sig, etc etc)
code-->
(require (lib "unitsig.ss")
(lib "servlet-sig.ss" "web-server")
(lib "servlet-helpers.ss" "web-server")
(lib "schemeql.ss" "schemeql"))
(define connection (connect-to-database "mitdate" "dbuser" "dbpass"))
(define (search field1 field2)
(let ((select-struct
(query (USERNAME) "users"
(AND (= VALID 1)
(= FIELD 2)))))
(let ((result (schemeql-execute select-struct)))
(result-cursor result))))
(unit/sig () (import servlet^)
`(html ()
(title () "Search Results")
(body ()
(h1 "Search Results")
,@(let loop ((cursor (search 1 #f)))
(if (cursor-null? cursor)
'()
(append `(p ,@(cursor-car cursor))
(loop (cursor-cdr cursor))))))))