remove examples
parent
10f90c7bc2
commit
d19e5f6b89
@ -1 +0,0 @@
|
|||||||
#lang reader (submod "nothing.rkt" reader)
|
|
@ -1 +0,0 @@
|
|||||||
#lang s-exp "nothing.rkt"
|
|
@ -1,39 +0,0 @@
|
|||||||
#lang racket
|
|
||||||
(provide (all-from-out racket))
|
|
||||||
|
|
||||||
(module reader syntax/module-reader
|
|
||||||
br/ex/nothing/nothing)
|
|
||||||
|
|
||||||
#|
|
|
||||||
|
|
||||||
#lang racket
|
|
||||||
(provide (all-from-out racket))
|
|
||||||
|
|
||||||
(module reader racket/base
|
|
||||||
(provide read read-syntax))
|
|
||||||
|
|
||||||
|#
|
|
||||||
|
|
||||||
#|
|
|
||||||
|
|
||||||
(module nothing racket
|
|
||||||
(provide (all-from-out racket))
|
|
||||||
|
|
||||||
(module reader syntax/module-reader
|
|
||||||
br/ex/nothing))
|
|
||||||
|
|
||||||
|#
|
|
||||||
|
|
||||||
#|
|
|
||||||
|
|
||||||
#lang racket
|
|
||||||
|
|
||||||
(module reader syntax/module-reader
|
|
||||||
#:language '(submod br/ex/nothing semantics))
|
|
||||||
|
|
||||||
(module semantics racket
|
|
||||||
(provide (all-from-out racket)))
|
|
||||||
|
|
||||||
(sleep 100000)
|
|
||||||
|
|
||||||
|#
|
|
@ -1,10 +0,0 @@
|
|||||||
#lang s-exp "expander.rkt"
|
|
||||||
|
|
||||||
"asdf"
|
|
||||||
|
|
||||||
|
|
||||||
41
|
|
||||||
|
|
||||||
1+2i
|
|
||||||
|
|
||||||
;; but not foo
|
|
@ -1,11 +0,0 @@
|
|||||||
#lang br
|
|
||||||
(provide (rename-out [simple-module-begin #%module-begin])
|
|
||||||
#%datum #%top-interaction)
|
|
||||||
(define #'(simple-module-begin expr ...)
|
|
||||||
#'(#%module-begin
|
|
||||||
(define lines (list expr ...))
|
|
||||||
(display (format "Expressions = ~a" (length lines)))
|
|
||||||
(define numbers (filter number? lines))
|
|
||||||
(unless (zero? (length numbers))
|
|
||||||
(displayln (format ", numbers = ~a" (length numbers)))
|
|
||||||
(apply + numbers))))
|
|
@ -1,7 +0,0 @@
|
|||||||
#lang reader (submod "rapl.rkt" reader)
|
|
||||||
|
|
||||||
1 3 3 7 * 8.41
|
|
||||||
|
|
||||||
⌊ 8.41
|
|
||||||
|
|
||||||
5 ⌊ 8.41
|
|
@ -1,3 +0,0 @@
|
|||||||
#lang reader "reader.rkt"
|
|
||||||
|
|
||||||
This is a terrible idea, and I should know because I invented it.
|
|
@ -1,9 +0,0 @@
|
|||||||
#lang br
|
|
||||||
(provide read-syntax)
|
|
||||||
|
|
||||||
(define (read-syntax src in)
|
|
||||||
(syntax-let ([#'src-str (port->string in)])
|
|
||||||
#'(module no-name racket
|
|
||||||
(define (scramble str)
|
|
||||||
(list->string (shuffle (string->list str))))
|
|
||||||
(regexp-replace* #px"\\w+" src-str scramble))))
|
|
@ -1,3 +0,0 @@
|
|||||||
#lang reader "stack-compiler.rkt"
|
|
||||||
|
|
||||||
(* (/ 25 14 (expt 5 2)) (/ 2 3 1) (* 10 12 15))
|
|
@ -1,33 +0,0 @@
|
|||||||
#lang br
|
|
||||||
|
|
||||||
(provide #%top-interaction) ; activates the REPL
|
|
||||||
|
|
||||||
;; reader goes first and
|
|
||||||
;; 1) converts surface syntax into Rackety expressions (wrapping in `(inst ...)`)
|
|
||||||
;; 2) creates a module specifying semantics source (in this case, same module)
|
|
||||||
(provide read-syntax)
|
|
||||||
(define (read-syntax src-path src-input-port)
|
|
||||||
(define expr-datums (for/list ([src-line (in-lines src-input-port)]
|
|
||||||
#:when (regexp-match #px"\\w" src-line))
|
|
||||||
(format-datum '~a src-line)))
|
|
||||||
(syntax-let ([#'(expr-stx ...) expr-datums]) ; ok to bind with non-syntax
|
|
||||||
#'(module stack-compiler-module "stack-compiler.rkt"
|
|
||||||
expr-stx ...)))
|
|
||||||
|
|
||||||
|
|
||||||
;; semantics always start with #%module-begin, which unwraps the content of the module and rewraps it
|
|
||||||
(provide (rename-out [stack-module-begin #%module-begin]))
|
|
||||||
(define #'(stack-module-begin expr ...)
|
|
||||||
#'(#%module-begin
|
|
||||||
(stackify (quote expr)) ...))
|
|
||||||
|
|
||||||
|
|
||||||
(define (stackify quoted-expr)
|
|
||||||
(define pushes
|
|
||||||
(let loop ([x quoted-expr])
|
|
||||||
(cond
|
|
||||||
[(list? x)
|
|
||||||
(match-define (list op args ...) x)
|
|
||||||
(append (make-list (sub1 (length args)) op) (flatten (map loop args)))]
|
|
||||||
[else x])))
|
|
||||||
(for-each displayln (map (λ(p) (format "push ~a" p)) (reverse pushes))))
|
|
@ -1,21 +0,0 @@
|
|||||||
#lang reader "stack.rkt"
|
|
||||||
|
|
||||||
push 15
|
|
||||||
push 12
|
|
||||||
push 10
|
|
||||||
push *
|
|
||||||
push *
|
|
||||||
push 1
|
|
||||||
push 3
|
|
||||||
push 2
|
|
||||||
push /
|
|
||||||
push /
|
|
||||||
push 2
|
|
||||||
push 5
|
|
||||||
push expt
|
|
||||||
push 14
|
|
||||||
push 25
|
|
||||||
push /
|
|
||||||
push /
|
|
||||||
push *
|
|
||||||
push *
|
|
@ -1,62 +0,0 @@
|
|||||||
#lang br
|
|
||||||
|
|
||||||
(provide #%top-interaction) ; activates the REPL
|
|
||||||
|
|
||||||
;; reader goes first and
|
|
||||||
;; 1) converts surface syntax into Rackety expressions (wrapping in `(inst ...)`)
|
|
||||||
;; 2) creates a module specifying semantics source (in this case, same module)
|
|
||||||
(provide read-syntax)
|
|
||||||
(define (read-syntax src-path src-input-port)
|
|
||||||
(define inst-datums (for/list ([src-line (in-lines src-input-port)]
|
|
||||||
#:when (regexp-match #px"\\w" src-line))
|
|
||||||
(format-datum '(inst ~a) src-line)))
|
|
||||||
(syntax-let ([#'(inst-stx ...) inst-datums]) ; ok to bind with non-syntax
|
|
||||||
#'(module stack-lang-module "stack.rkt"
|
|
||||||
inst-stx ...)))
|
|
||||||
|
|
||||||
(define stack empty)
|
|
||||||
|
|
||||||
;; semantics always start with #%module-begin, which unwraps the content of the module and rewraps it
|
|
||||||
(provide (rename-out [stack-module-begin #%module-begin]))
|
|
||||||
(define #'(stack-module-begin instructions ...)
|
|
||||||
#'(#%module-begin
|
|
||||||
instructions ...
|
|
||||||
(first stack)))
|
|
||||||
|
|
||||||
|
|
||||||
;; then file is processed like a normal Racket file.
|
|
||||||
|
|
||||||
(provide inst)
|
|
||||||
(define (inst . args)
|
|
||||||
(if (<= 1 (length args) 2)
|
|
||||||
(let ([proc (first args)])
|
|
||||||
(apply proc (cdr args)))
|
|
||||||
(void)))
|
|
||||||
|
|
||||||
|
|
||||||
(provide push)
|
|
||||||
(define (push arg)
|
|
||||||
(display "push: ")
|
|
||||||
(cond
|
|
||||||
[(procedure? arg)
|
|
||||||
(displayln (format "got ~a, replacing ~a and ~a with result" arg (first stack) (second stack) ))
|
|
||||||
(set! stack (cons (arg (first stack) (second stack)) (cddr stack)))]
|
|
||||||
[else (displayln (format "storing value ~a" arg))
|
|
||||||
(set! stack (cons arg stack))])
|
|
||||||
(displayln stack))
|
|
||||||
|
|
||||||
;; exercises
|
|
||||||
|
|
||||||
(provide pop)
|
|
||||||
(define (pop)
|
|
||||||
(display "pop: ")
|
|
||||||
(displayln (format "got ~a" (car stack)))
|
|
||||||
(set! stack (cdr stack))
|
|
||||||
(displayln stack))
|
|
||||||
|
|
||||||
(provide swap)
|
|
||||||
(define (swap)
|
|
||||||
(display "swap: ")
|
|
||||||
(displayln (format "~a and ~a" (first stack) (second stack)))
|
|
||||||
(set! stack (list* (second stack) (first stack) (cddr stack)))
|
|
||||||
(displayln stack))
|
|
@ -1,37 +0,0 @@
|
|||||||
#lang br
|
|
||||||
|
|
||||||
(module reader br
|
|
||||||
(define (read-syntax src-path src-port)
|
|
||||||
(define src-strs (port->lines src-port))
|
|
||||||
(define (make-datum str) (format-datum '(dispatch ~a) str))
|
|
||||||
(define src-exprs (map make-datum src-strs))
|
|
||||||
(inject-syntax ([#'(list src-expr ...) src-exprs])
|
|
||||||
#'(module stacker-mod "stacker-lang.rkt"
|
|
||||||
src-expr ...)))
|
|
||||||
(provide read-syntax))
|
|
||||||
|
|
||||||
(define #'(stacker-module-begin reader-line ...)
|
|
||||||
#'(#%module-begin
|
|
||||||
reader-line ...
|
|
||||||
(display (first stack))))
|
|
||||||
(provide (rename-out [stacker-module-begin #%module-begin]))
|
|
||||||
|
|
||||||
(define stack (list 0 0))
|
|
||||||
(define (push num) (set! stack (cons num stack)))
|
|
||||||
|
|
||||||
(define (dispatch arg-1 [arg-2 #f])
|
|
||||||
(cond
|
|
||||||
[(number? arg-2) (push arg-2)]
|
|
||||||
[else
|
|
||||||
(define op arg-1)
|
|
||||||
(define op-result (op (first stack) (second stack)))
|
|
||||||
(set! stack (cons op-result (drop stack 2)))]))
|
|
||||||
|
|
||||||
#;(define dispatch
|
|
||||||
(case-lambda
|
|
||||||
[(push num) (push num)]
|
|
||||||
[(stack-op)
|
|
||||||
(define op-result (stack-op (first stack) (second stack)))
|
|
||||||
(set! stack (cons op-result (drop stack 2)))]))
|
|
||||||
|
|
||||||
(provide #%top-interaction)
|
|
@ -1,6 +0,0 @@
|
|||||||
#lang reader (submod "stacker-lang.rkt" reader)
|
|
||||||
push 4
|
|
||||||
push 8
|
|
||||||
+
|
|
||||||
push 3
|
|
||||||
*
|
|
Loading…
Reference in New Issue