[plt-scheme] slatex and including unit testable code

From: Robby Findler (robby at cs.uchicago.edu)
Date: Wed May 16 11:03:30 EDT 2007

See also "to-string.ss" in Help Desk.

Robby

On 5/16/07, Danny Yoo <dyoo at cs.wpi.edu> wrote:
>
>
> On Wed, 16 May 2007, Robby Findler wrote:
>
> > Well, you probably wouldn't need to hack the parser to go that route.
> > You can use read-syntax to get a version of the file as a value that has
> > the source locations in it and then reconstruct things from there. Not
> > trivial, but at least you can rely on the manuals for help :)
>
>
> Hi Grant,
>
>
> Here's an example that may help you get started:
>
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> (module example-with-syntax-reprinter mzscheme
>    (require (lib "etc.ss")
>             (planet "syntax-reprinter.ss"
>                     ("dyoo" "syntax-reprinter.plt" 1)))
>
>    (define (make-sample-port)
>      (local
>          ((define sample-port (open-input-string #<<HERE
> (define (hello world)
>    (printf "Hello, ~a"
> world))
>
> (define (goodbye)
>    (printf "Goodbye!"))
> HERE
>                                                  )))
>        (port-count-lines! sample-port)
>        sample-port))
>
>
>    ;; find-defn: symbol input-port -> (union syntax #f)
>    ;; Looks for a defined function in defun-style syntax.
>    (define (find-defn name port)
>      (let loop ([stx (read-syntax #f port)])
>        (cond [(eof-object? stx)
>               #f]
>              [else
>               (syntax-case stx ()
>                 [(define (name-stx args ...) body ...)
>                  (and (symbol? (syntax-e #'name-stx))
>                       (symbol=? (syntax-e #'name-stx)
>                                 name))
>                  stx]
>                 [else
>                  (loop (read-syntax #f port))])])))
>
>
>    (syntax-reprint (find-defn 'goodbye (make-sample-port)))
>    (newline)
>    (newline)
>    (syntax-reprint (find-defn 'hello (make-sample-port))))
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>
>
> Best of wishes!
> _________________________________________________
>   For list-related administrative tasks:
>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>


Posted on the users mailing list.