From e5523b2835d5ffb58f8f0cc5513fd50a0591018f Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Wed, 5 Jun 2019 18:02:07 -0700 Subject: [PATCH] dyadic demo --- beautiful-racket-demo/dyadic-demo/main.rkt | 40 ++++++++++++++++++++ beautiful-racket-demo/dyadic-demo/source.rkt | 2 + beautiful-racket-demo/dyadic-demo/source.txt | 1 + 3 files changed, 43 insertions(+) create mode 100644 beautiful-racket-demo/dyadic-demo/main.rkt create mode 100644 beautiful-racket-demo/dyadic-demo/source.rkt create mode 100644 beautiful-racket-demo/dyadic-demo/source.txt diff --git a/beautiful-racket-demo/dyadic-demo/main.rkt b/beautiful-racket-demo/dyadic-demo/main.rkt new file mode 100644 index 0000000..7783f2a --- /dev/null +++ b/beautiful-racket-demo/dyadic-demo/main.rkt @@ -0,0 +1,40 @@ +#lang br +(require racket/file) + +#| +(define src (file->string "source.txt")) + +(define strs (string-split src)) + +(define toks (map (λ (str) (or (string->number str) (string->symbol str))) strs)) + +(define expr (list (second toks) (first toks) (third toks))) + +(eval expr (make-base-namespace)) +|# + +#| +(eval + (match (for/list ([str (in-list (string-split (file->string "source.txt")))]) + (or (string->number str) (string->symbol str))) + [(list num1 op num2) (list op num1 num2)]) + (make-base-namespace)) +|# + +(define (eval-src src) + (eval + (match (for/list ([str (in-list (string-split src))]) + (or (string->number str) (string->symbol str))) + [(list num1 op num2) (list op num1 num2)]) (make-base-namespace))) + + +(module reader br + (provide read-syntax) + (define (read-syntax name ip) + `(module mod "main.rkt" + ,(port->string ip)))) + +(provide #%datum #%top-interaction (rename-out [mb #%module-begin])) +(define-macro (mb SRC) + #'(#%module-begin + (eval-src SRC))) \ No newline at end of file diff --git a/beautiful-racket-demo/dyadic-demo/source.rkt b/beautiful-racket-demo/dyadic-demo/source.rkt new file mode 100644 index 0000000..3ef4e66 --- /dev/null +++ b/beautiful-racket-demo/dyadic-demo/source.rkt @@ -0,0 +1,2 @@ +#lang dyadic-demo +12 + 34 \ No newline at end of file diff --git a/beautiful-racket-demo/dyadic-demo/source.txt b/beautiful-racket-demo/dyadic-demo/source.txt new file mode 100644 index 0000000..719e9b7 --- /dev/null +++ b/beautiful-racket-demo/dyadic-demo/source.txt @@ -0,0 +1 @@ +12 + 34 \ No newline at end of file