36 lines
1.0 KiB
Scheme
36 lines
1.0 KiB
Scheme
; strcat.scm
|
|
|
|
;;; SPECIFICATION
|
|
|
|
;For this test, each program should be implemented in the same way,
|
|
;according to the following specification.
|
|
;
|
|
; pseudocode for strcat test
|
|
;
|
|
; s is initialized to the null string
|
|
; repeat N times:
|
|
; append "hello\n" to s
|
|
; count the number of individual characters in s
|
|
; print the count
|
|
|
|
; There should be N distinct string append statements done in a loop.
|
|
; After each append the resultant string should be 6 characters
|
|
; longer (the length of "hello\n").
|
|
; s should be a string, string buffer, or character array.
|
|
; The program should not construct a list of strings and join it.
|
|
|
|
(module strcat mzscheme
|
|
(define p (open-output-bytes))
|
|
|
|
(define hello #"hello\n")
|
|
|
|
(let loop ([n (string->number
|
|
(vector-ref (current-command-line-arguments) 0))])
|
|
(unless (zero? n)
|
|
(display hello p)
|
|
;; At this point, (get-output-bytes p) would
|
|
;; return the byte string accumulated so far.
|
|
(loop (sub1 n))))
|
|
|
|
(printf "~a\n" (file-position p)))
|