Scheme 如何正确地从函数返回值?

Scheme 如何正确地从函数返回值?,scheme,racket,Scheme,Racket,我试图通过从“容量”中减去“注册”,然后在单独的函数中打印结果,来计算每个班级的剩余座位数。但是,我的open seats函数不返回任何值,除非我使用display函数。我怎样才能解决这个问题 #lang racket ( define course-list (cons '("Dept" "Number" "Section" "Class Nbr" "Capacity" "Enrollment")

我试图通过从“容量”中减去“注册”,然后在单独的函数中打印结果,来计算每个班级的剩余座位数。但是,我的open seats函数不返回任何值,除非我使用display函数。我怎样才能解决这个问题

    #lang racket
       ( define course-list (cons '("Dept" "Number" "Section" "Class Nbr" "Capacity" "Enrollment")
                                         '(("CMSC" "201" "1" "1052" 100 30)
                                         ("CMSC" "341" "6" "7447" 40 27)
                                         ("CMSC" "341" "3" "7443" "40" 29)
                                         ("CMSC" "331" "5" "7746" 40 36)
                                         ("CMSC" "331" "6" "7747" 40 "40")
                                         ("CMSC" "471" "3" "8196" 40 31))

                                  )
            )

   (define (open-seats section)
      (for ([e (in-list  course-list)])
        (if (equal? section (string->number (list-ref e 2))) (- (list-ref e 4) (list-ref e 5)) 'something)
       ;(if (equal? section (string->number (list-ref e 2))) (display(- (list-ref e 4) (list-ref e 5))) 'something)
            )
        )
  ;test open-seats          
     (open-seats 1)

  (define (report-open-seats list-of-courses)
    (for ([e (in-list course-list)])
      (if (and (number? (list-ref e 4)) (number? (list-ref e 5))) (displayln(string-append (list-ref e 0) (list-ref e 1) " (Section " (list-ref e 2) ")=> " (open-seats 1))) newline)
            )
   )

  ; leave the following function call intact
  ;(report-open-seats course-list)

要列出您可以使用的项目,请执行以下操作:

(define (open-seats section)
  (for/list ([e (in-list  course-list)]
             #:when (equal? section (string->number (list-ref e 2))))
    (- (list-ref e 4) (list-ref e 5))))

如果您想返回值,请避免使用
for
循环。忘记您学过的其他语言,尤其是循环和赋值之类的语言。像从未体验过编程一样学习Scheme。