Thanks, Laurent.  That sounds like a much better idea!  --Geoffrey

On Feb 18, 2014, at 17:09 , Laurent <laurent.ors...@gmail.com> wrote:

> Could you use a dictionary (e.g., hash table) instead of `define`s by any 
> chance? Then you would not need `eval` but only `dict-ref`, which is way less 
> problematic.
> 
> Laurent
> 
> 
> On Tue, Feb 18, 2014 at 9:54 PM, Geoffrey S. Knauth <ge...@knauth.org> wrote:
> Our local community has a funky tax form not handled by the big tax prep 
> vendors.  So I rolled my own with Racket.  It outputs LaTeX so I have 
> something to submit all ready.
> 
> Well it would, except I have goofed something up.  I'm eval'ing a symbol 
> (probably incorrect).  The symbol comes not from the top-level, but from a 
> module.  I'm forming a symbol 'line1-gsk.  I want the value of the identifier 
> represented by that symbol.  How do I do that?  (If my son were back from 
> school, I'd ask him...)
> 
> Geoff
> 
> line1-gsk: undefined;
>  cannot reference undefined identifier
>   context...:
>    /Users/gknauth/me/2014/taxes/TY2013/ipt-latex.rkt:50:2: for-loop
>    /Users/gknauth/me/2014/taxes/TY2013/ipt-latex.rkt:49:0: pr-table-rows
>    /Users/gknauth/me/2014/taxes/TY2013/ipt-latex.rkt:35:0: pr-table
>    /Users/gknauth/me/2014/taxes/TY2013/ipt-hdr-gsk.rkt: [running body]
> 
> ipt-data.rkt:
> (provide (all-defined-out))
> (define line1-gsk  (round (+ 111 222 333)))
> ; I want this value, line1-gsk, to be picked up in pr-table-row below
> 
> ipt-latex.rkt:
> (require (lib "48.ss" "srfi"))
> (require "ipt-data.rkt")
> (provide (all-defined-out))
> ...
> (define (pr-table-row lineno whoisa whoisb)  ; whoisa is "gsk" (me), whoisb 
> is my spouse
>   (let* ((base-str (string-append "line" (number->string lineno) "-"))
>          ;;;;;; ERROR FIRST HAPPENS HERE ;;;;;;
>        (amt-a (eval (string->symbol (string-append base-str whoisa))))
>          ;;;;;; (eval 'line1-gsk)        ;;;;;;
>        (amt-b (eval (string->symbol (string-append base-str whoisb))))
>        (what  (eval (string->symbol (string-append base-str "what"))))
>        (desc  (eval (string->symbol (string-append base-str "desc")))))
>     (printf
>      (string-append
>       (number->string lineno) "&"
>       what "&"
>       
>       (number->string lineno) "&"
>       "\\texttt{" (format "~9,2F" amt-a) "}&"
>       "\\texttt{" (format "~9,2F" amt-b) "}"
>       (if desc
>         (string-append "\\\\&{\\small " desc "}&&&")
>         "")
>       "\\\\\\hline\n"))))
> 
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users
> 
> 


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to