aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2024-09-14 12:18:22 -0400
committerGravatar Peter McGoron 2024-09-14 12:18:22 -0400
commit9dc8e4bb5e4a81fa5442b9ae4ee07108d20b930e (patch)
tree02be02b29a15553fe84b64eb21dd8674234ffe11
parentuse a better random number generator from CHICKEN (diff)
Cache calculated frequency dataHEADmaster
This doesn't help that much because it's not streamed data.
-rw-r--r--toplevel.scm20
1 files changed, 16 insertions, 4 deletions
diff --git a/toplevel.scm b/toplevel.scm
index 9fa11bd..d5d6cd0 100644
--- a/toplevel.scm
+++ b/toplevel.scm
@@ -1,11 +1,23 @@
(load "markov.chicken.so")
(import markov
(chicken format)
- srfi-18)
+ srfi-18
+ srfi-69
+ (chicken file))
-(display "Generating table (this may take a while)\n" (current-error-port))
-(define table (make-table-from-file "kjv.txt"))
-(display "Done generating.\n")
+(define table
+ (if (file-exists? "kjv-data.scm")
+ (with-input-from-file "kjv-data.scm"
+ (lambda ()
+ (display "Reading previously generated data.\n" (current-error-port))
+ (alist->hash-table (read))))
+ (with-output-to-file "kjv-data.scm"
+ (lambda ()
+ (display "Generating table (this may take a while)\n" (current-error-port))
+ (let ((table (make-table-from-file "kjv.txt")))
+ (display "done generating.\n" (current-error-port))
+ (write (hash-table->alist table))
+ table)))))
(define (generate-until-word* current collected limits)
(if (member current limits)