Letter frequency: Difference between revisions

m
→‎Imperative version: Rename functions to clarify purpose, a little more factoring.
(→‎Imperative version: Re-factored.)
m (→‎Imperative version: Rename functions to clarify purpose, a little more factoring.)
Line 1,564:
 
(define (main args)
(with-input-from-file "unixdict../word-list.txt" count-charschar-freqs)
(show-char-freqs #\a #\z))
 
(define (count-charschar-freqs)
(let* ((ln (read-line))
(at-eof (eof-object? ln)))
(if (not at-eof) (begin
(for-eachlet count((string-charchars (string->list ln)))
(for-each count-char-freq string-chars)))))
(count-char-freqs)))))
 
(define (count-char-freq ch)
(if (char-alphabetic? ch)
(let* ((idxchar-num (char->integer (char-downcase ch)))
(frq (vector-ref *freqs* idx)))
(vector-set! *freqs* idxchar-num (+ 1 frq)))))
 
(define (show-char-freqs first-letter last-letter)
(format #t "Letter Frequency~%")
(let* ((first-num (char->integer first-letter))
Line 1,586 ⟶ 1,587:
(num-count (+ 1 (- last-num first-num)))
(nums-list (iota num-count first-num)))
(for-each show-char-freq nums-list)))
 
(define (show-char-freq let-num)
(let ((ch (integer->char let-num))
(frq (vector-ref *freqs* let-num)))