From 1f770220b7681e27284691fd1229cd8184b9c777 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Fri, 10 Feb 2017 08:52:34 -0800 Subject: [PATCH] modularize run --- .../basic-demo-2/expander.rkt | 24 +------------------ beautiful-racket-demo/basic-demo-2/run.rkt | 2 +- .../basic-demo-2a/expander.rkt | 23 +----------------- beautiful-racket-demo/basic-demo-2a/run.rkt | 24 +++++++++++++++++++ 4 files changed, 27 insertions(+), 46 deletions(-) create mode 100644 beautiful-racket-demo/basic-demo-2a/run.rkt diff --git a/beautiful-racket-demo/basic-demo-2/expander.rkt b/beautiful-racket-demo/basic-demo-2/expander.rkt index 64e96a4..866ae7b 100644 --- a/beautiful-racket-demo/basic-demo-2/expander.rkt +++ b/beautiful-racket-demo/basic-demo-2/expander.rkt @@ -1,6 +1,5 @@ #lang br/quicklang -(require "struct.rkt" - "elements.rkt") +(require "struct.rkt" "run.rkt" "elements.rkt") (provide (rename-out [b-module-begin #%module-begin]) (all-from-out "elements.rkt")) @@ -25,24 +24,3 @@ var-stx) #:key syntax->datum))) -(define (run line-table) - (define line-vec - (list->vector (sort (hash-keys line-table) <))) - (with-handlers ([end-program-signal? (λ (exn-val) (void))]) - (for/fold ([line-idx 0]) - ([i (in-naturals)] - #:break (>= line-idx (vector-length line-vec))) - (define line-num (vector-ref line-vec line-idx)) - (define line-func (hash-ref line-table line-num)) - (with-handlers - ([change-line-signal? - (λ (cls) - (define clsv (change-line-signal-val cls)) - (or - (and (exact-positive-integer? clsv) - (vector-member clsv line-vec)) - (line-func #:error (format "line ~a not found" clsv))))]) - (line-func) - (add1 line-idx))))) - - diff --git a/beautiful-racket-demo/basic-demo-2/run.rkt b/beautiful-racket-demo/basic-demo-2/run.rkt index b264363..8e6b161 100644 --- a/beautiful-racket-demo/basic-demo-2/run.rkt +++ b/beautiful-racket-demo/basic-demo-2/run.rkt @@ -20,4 +20,4 @@ (vector-member clsv line-vec)) (line-func #:error (format "line ~a not found" clsv))))]) (line-func) - (add1 line-idx))))) \ No newline at end of file + (add1 line-idx))))) diff --git a/beautiful-racket-demo/basic-demo-2a/expander.rkt b/beautiful-racket-demo/basic-demo-2a/expander.rkt index 2fa2193..e80e754 100644 --- a/beautiful-racket-demo/basic-demo-2a/expander.rkt +++ b/beautiful-racket-demo/basic-demo-2a/expander.rkt @@ -1,5 +1,5 @@ #lang br/quicklang -(require "struct.rkt" "elements.rkt") +(require "struct.rkt" "run.rkt" "elements.rkt") (provide (rename-out [b-module-begin #%module-begin]) (all-from-out "elements.rkt")) @@ -13,25 +13,4 @@ (apply hasheqv (append (list NUM LINE-FUNC) ...))) (void (run line-table))))) -(define (run line-table) - (define line-vec - (list->vector (sort (hash-keys line-table) <))) - (with-handlers ([end-program-signal? (λ (exn-val) (void))]) - (for/fold ([line-idx 0]) - ([i (in-naturals)] - #:break (>= line-idx (vector-length line-vec))) - (define line-num (vector-ref line-vec line-idx)) - (define line-func (hash-ref line-table line-num)) - (with-handlers - ([change-line-signal? - (λ (cls) - (define clsv (change-line-signal-val cls)) - (or - (and (exact-positive-integer? clsv) - (vector-member clsv line-vec)) - (error (format "error in line ~a: line ~a not found" - line-num clsv))))]) - (line-func) - (add1 line-idx))))) - diff --git a/beautiful-racket-demo/basic-demo-2a/run.rkt b/beautiful-racket-demo/basic-demo-2a/run.rkt new file mode 100644 index 0000000..73b8867 --- /dev/null +++ b/beautiful-racket-demo/basic-demo-2a/run.rkt @@ -0,0 +1,24 @@ +#lang br +(require "line.rkt" "struct.rkt") +(provide run) + +(define (run line-table) + (define line-vec + (list->vector (sort (hash-keys line-table) <))) + (with-handlers ([end-program-signal? (λ (exn-val) (void))]) + (for/fold ([line-idx 0]) + ([i (in-naturals)] + #:break (>= line-idx (vector-length line-vec))) + (define line-num (vector-ref line-vec line-idx)) + (define line-func (hash-ref line-table line-num)) + (with-handlers + ([change-line-signal? + (λ (cls) + (define clsv (change-line-signal-val cls)) + (or + (and (exact-positive-integer? clsv) + (vector-member clsv line-vec)) + (error (format "error in line ~a: line ~a not found" + line-num clsv))))]) + (line-func) + (add1 line-idx)))))