您好,我想了解 mo 程序到底出了什么问题。我已经为球拍中的队列的入队、出队、顶部和大小编写了代码。我还编写了测试用例来在模块中试用我的程序。当我尝试通过键入以下命令“racket run-tests.rkt | less”来运行测试用例时,我收到以下错误:“default-load-handler: expected only a module' declaration for
queue', but found an extra expression in : #
=== 上下文 === 默认加载/使用编译“
这是我的三个文件和其中的代码
1-队列.rkt
(module queue racket
(provide make-queue enqueue dequeue top size queue-tests)
(struct queue (front back size) #:mutable #:transparent)
(define (make-queue) (queue null null 0))
(define (enqueue q elt)
(set-queue-back! q (cons elt (queue-back q)))
(set-queue-size! q (+ (queue-size q) 1))
)
(define (dequeue q)
(cond ((eq? (queue-size q) 0) null)
((null? (queue-front q))
(begin
(set-queue-front! q (cdr (reverse (queue-back q))))
(set-queue-back! q null)
(set-queue-size! q (- (queue-size q) 1))))
(else
(begin
(set-queue-front! q (cdr (queue-front q)))
(set-queue-size! q (- (queue-size q) 1))))
)
)
(define (top q)
(cond ((eq? (queue-size q) 0) null)
((null? (queue-front q)) (last (queue-back q)))
(else (car (queue-front q)))))
(define (size q)
(queue-size q))
; Test cases Here
(include "test-queue.rkt")
)
2-测试队列.rkt
#lang racket/base
(require rackunit)
(define queue-tests
(test-suite
"Tests for the Queue"
(test-case "Initial Queue Properties"
(let ((q (make-queue)))
(check-equal? (size q) 0 "Queue initially should have size zero.")
(check-equal? (dequeue q) null "Dequeue on an empty queue returns null")
(check-equal? (size q) 0 "Dequeue on empty queue leaves size as zero")
))
(test-case "One Element queue ---- Functional test"
(let ((q (make-queue)))
(check-equal? (size q) 0 "Stack initially should be of size zero")
(enqueue q 1)
(check-equal? (size q) 1 "Added one element to back of queue")
(check-equal? (top q) 1 "Take a sneak peak at our first element")
(dequeue q)
(check-equal? (size 1) 0 "size should now be zero")
(check-equal? (dequeue q) null "dequeue on empty queue returns null")
))
(test-case "One Element queue --- Internal Test"
(let ((q (make-queue)))
(check-equal? (size q) 0 "queue initially should have size zero.")
(enqueue q 3)
(check-equal? (size q) 1 "Added one element.")
(check-equal? (queue-back q) '(3) "Is the element in the back list?")
(check-equal? (top s) 3 "Look at our one element.")
(check-equal? (queue-front q) '(3) "Is the element in the front list?")
(dequeue s)
(check-equal? (queue-front q) '() "Is the data empty now?")
))
(test-case "Multi Element queue --- Functional Test"
(let ((q (make-queue))
(elts (list 8 6 7 5 3 0 9))
)
(check-equal? (size q) 0 "queue initially should have size zero.")
(for ((i elts)
(num (in-range 1 8)))
(enqueue q i)
(check-equal? (size q) num "Testing size.")
(check-equal? (top q) i "Testing top with multiple additions.")
)
(for ((i (reverse elts))
(num (reverse (stream->list (in-range 1 8)))))
(check-equal? (top q) i "Testing top with multiple deletions")
(dequeue q)
(check-equal? (size q) (- num 1) "Testing size.")
)
))
(test-case "Multi Element queue --- Ebb and Flow Test"
(let ((q (make-queue))
(elts (list 8 6 7 5 3 0 9))
)
(check-equal? (size q) 0 "queue initially should have size zero.")
(for ((i elts)
(num (in-range 1 8)))
(enqueue q i)
(check-equal? (size q) num "Testing size, first flow.")
(check-equal? (top q) i "Testing top with multiple additions.")
)
(for ((i (reverse elts))
(num (reverse (stream->list (in-range 1 8)))))
(check-equal? (top q) i "Testing top with multiple deletions")
(dequeue q)
(check-equal? (size q) (- num 1) "Testing size, first ebb.")
)
(for ((i elts)
(num (in-range 1 8)))
(enqueue q i)
(check-equal? (size q) num "Testing size, second flow.")
(check-equal? (top q) i "Testing top with multiple additions.")
)
(for ((i (reverse elts))
(num (reverse (stream->list (in-range 1 8)))))
(check-equal? (top q) i "Testing top with multiple deletions")
(dequeue q)
(check-equal? (size q) (- num 1) "Testing size, second ebb.")
)
))
(test-case "Multi Element queue --- Internal Test"
(let ((q (make-queue))
(elts (list 5 8 8 2 3 0 0))
(tmp null)
)
(for ((i elts)
(num (in-range 1 8)))
(enqueue q i)
(check-equal? (size q) num "Testing size, second flow.")
(set! tmp (cons i tmp)) ; "push" element to a list
(check-equal? (queue-front q) tmp "Queue data is in correct form.")
)
))
))
3-运行测试.rkt
#lang racket/base
(require "queue.rkt")
(require rackunit/text-ui)
(run-tests queue-tests)
在发现存在的错误方面提供任何帮助将不胜感激。提前致谢。