a. Skim through this lab to determine what kinds of tasks you’ll need to complete.
b. You should also review the reading on files in Scheme.
c. Make a copy of the code from the reading.
/home/rebelsky/glimmer/samples/numbers.txt contains five
hundred and twenty-eight natural numbers.
sum-of-file from the reading to determine their sum.
b. How would you quickly determine if your attempt to sum those numbers was correct?
Citation: That file was copied from a similar file produced by Mr. Stone.
sum-of-file (and its helpers) as a pattern, write a Scheme
(file-size "file-name") that takes as argument a string
that names a file and returns the number of characters in that file
(that is, the number of times that
read-char can be called to read a
character from the file without returning the end-of-file object).
Note that you should not use
read in your procedure.
Find out what happens if
file-size is given a string
that does not name any existing file.
a. In the interactions pane, write a series of expressions that will create
my-info, with three lines, each of the form
For example, the first line might read
b. Determine what happens when you read that file back using
c. Determine what happens when you read that file back using
The Scheme standard says that if you try to open an output port to a file that already exists, “the effect is unspecified”. That is, anything might happen. Hence, designers of a particular implementation of Scheme are free to do what they choose.
a. Find out through experimentation what DrRacket does in this situation.
b. Search the Web for the Racket documentation on
and find out how to overwrite an existing file.
a. Write a Scheme procedure,
(student-info output-port last-name
first-name major year) that writes one line in the form specified
b. Write a Scheme procedure
(dump-info file-name list-of-data)
that, given a list of student data, with each entry of the form
(last first major year), writes all the data to the given file.
(dump-info "/home/username/Desktop/data.csv" (list (list "Rebelsky" "Samuel" "Film Studies" 2017) (list "Dent" "Stu" "Liberal Arts" 2021) (list "K" "Russell" "Law" 1950) (list "Again" "Mash" "Robotic Soccer" 2020)))
c. Confirm that your procedure works correctly by opening the file in DrRacket.
d. Confirm that your procedure works correctly by opening the file
Write a procedure,
(display-file filename), that takes
the name of a file as a parameter and displays the contents of the file
with each line preceded by its line number.
Please read directly from the file. You may not use
file->chars in this definition.
store-divisors procedure from the reading to draw
up a list of the divisors of 120, storing them in a file named
divisors-of-120. Examine the file afterwards and confirm that the
answer is correct.
By the way, don’t give this procedure an extremely large number as argument – it’s much too slow. There are more efficient ways to find divisors!
Write a Scheme procedure that takes as arguments two file names (an input file and an output file), counts the number of occurrences of each vowel in the input file, and writes the result to the output file. Note that the output file should have the following form (with numbers in place of the number signs):
a,### e,### i,### o,### u,###