Racket 错误的原因是什么;for/list:序列绑定后缺少正文表达式…“;?

Racket 错误的原因是什么;for/list:序列绑定后缺少正文表达式…“;?,racket,Racket,我在尝试此代码时出现错误: (define odc (odbc-connect #:dsn DSNNAME #:user USER #:password PASSWORD)); (define-struct attendance-event (date flag)#:transparent) (define-struct list-attendance-events (v) #:methods gen:stream [(define (stream-empty? stream

我在尝试此代码时出现错误:

(define odc (odbc-connect #:dsn DSNNAME #:user USER #:password PASSWORD)); 
(define-struct attendance-event (date flag)#:transparent)

(define-struct list-attendance-events (v)
    #:methods gen:stream
    [(define (stream-empty? stream)
       (empty? (list-attendance-events-v stream)))
     (define (stream-first stream)
       (first (list-attendance-events-v stream)))
     (define (stream-rest stream)
       (rest (list-attendance-events-v stream)))])

(define list-of-events (
(for/list ([(date code)
            (in-query odc "select date, code from attendance
where student_id = ? and term_code = ?
"12345" "654321")]))
(make-attendance-event date code)
我的for/列表正在运行,但我更改了一些内容并将其打破。我可以得到'first'元素,我假设是'last',还可以检查是否为空

发生了什么事?

也许是这样

(define list-of-events 
  (for/list ([(date code)
              (in-query odc "select date, code from attendance
                             where student_id = ? and term_code = ?"
                        "12345" "654321")])
    (make-attendance-event date code)))

有什么方法可以更容易地发现括号中的问题吗?你的代码运行正常,我想修正的是参数。我在DrRacket中使用了
ctrl+I
来缩进代码。凹痕看起来不对劲,这让我看了看配对。而且你忘了一个“。DrRacket中的颜色显示了这一点。要在lisp中编写代码,至少需要一些基本的编辑器支持。球拍是理想的;或Emacs或Vim。但不是纯文本编辑器。有了一个像样的编辑器,您可以键入parens并点击一个键来自动缩进。正如@soegaard所说,如果你注意到缩进似乎不正确,你就会开始发现paren问题。