如何正确从函数返回值?

时间:2019-05-03 01:38:42

标签: scheme racket

我试图通过从“容量”中减去“入学人数”,然后在单独的函数中打印结果,来计算每个班级剩余的座位。但是,除非使用显示功能,否则我的座位功能不会返回任何值。我该如何解决?

    #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)

1 个答案:

答案 0 :(得分:1)

要组成项目列表,您可以像这样使用for/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))))