Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang r6rs
- (import (rnrs base)
- (rnrs io simple)
- (rnrs lists (6))
- (prefix (a-d disk disk) disk:)
- (prefix (a-d disk file-system) fs:)
- (prefix (a-d file sequential input-file) ifile:)
- (prefix (a-d file sequential output-file) ofile:)
- (only (racket base) random))
- ; Aanmaken disk.
- (define test_disk (disk:new "foo"))
- ; Formatten disk.
- (fs:format! test_disk "bar")
- ; Aanmaken file.
- (define tfile (ofile:new test_disk "foo-bar-test"))
- ; Opvullen van file met random getallen.
- ; Loop bevat een index om te verifieren hoeveel er al geloopd is door
- ; de member test kan het zijn dat er meer of minder getallen in de lijst
- ; zitten en dus ook minder getallen naar de disk worden geschreven.
- ; De lijst wordt gebruikt om bij te houden hoeveel getallen er weggeschreven zijn.
- (let loop ((i 0)
- (l '()))
- (if (< i 10000)
- (let ((temp (random 100000000)))
- (if (not (member temp l))
- (begin
- (ofile:write! tfile temp)
- (loop (+ i 1) (append l (cons temp '())))
- )
- (loop (+ 1 i) l))
- )
- )
- )
- ; Close van de file.
- (ofile:close-write! tfile)
- ; Unmounten van de disk.
- ; Heeft niet veel zin bij een niet cached disk maar voor didactische redenen staat het er toch.
- (disk:unmount test_disk)
- ; Aanmaken van vector die disks bevat.
- ; Kan gebruikt worden voor hoofdstuk 9 -> external sorting.
- (define aux-disks
- (let loop ((index 0)
- (v (make-vector 6)))
- (cond ((< index 6)
- (let ((name (string-append "aux_" (number->string index)))
- (d '()))
- (set! d (disk:new name))
- (fs:format! d name)
- (vector-set! v index d)
- )
- (loop (+ index 1) v)
- )
- (else v))
- )
- )
- (display 'done)
- ; Code kan beter maar is snel geschreven.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement