[plt-scheme] input from file
If you're willing to write your data in a slightly different format,
you can make the reading much simpler.
data:
((q1 10 20)
(q2 5 13)
(q3 5 8))
;; read-data : -> list-of-questions
(define (read-data filename)
(map read-line (call-with-input-file filename read)))
;; read-line : list of three elements -> question
(define (read-line l)
(make-question
(first l)
(first (rest l))
(first (rest (rest l)))))
For this to work, you need `map', which is in intermediate, and you
also need the functions call-with-input-file and read. They aren't in
the teaching languages, but save the code below in the file
read-from-file.ss and use it as a teachpack:
(module read-from-file mzscheme
(provide read-from-file)
(define (read-from-file fn)
(call-with-input-file fn read)))
In that case, read-data becomes:
;; read-data : -> list-of-questions
(define (read-data filename)
(map read-line (read-from-file filename)))
Robby