My function would always get hung up on the unknown identifiers like 'title' or 'math' when it tried to evaluate the expressions passed as arguments - but you are right, the macro is not really necessary. I can quote the expressions and use the html-writing module instead, which handles quoted lists.
I was just looking for ways to achieve a cleaner syntax.



On 07.01.13 23:20, Matthias Felleisen wrote:
I don't see any need for a macro here. Why not use a function that iterates 
over these 'forms':

(define (expr-iter . form)
   (for ((f form))
     (case (first f)
       ...
       [(math) (eval (second f) some-useful-namespace)]
       ...)))





On Jan 7, 2013, at 3:57 PM, Philipp Dikmann wrote:

Hello Racket-Users,

in trying to iterate a series of expressions and evaluating them differently on 
a case-by-case basis - specifically in the body of a (html-template) - Racket 
is throwing errors indicating that my expressions end up in the wrong places. 
In the code below, it appears that + is being interpreted as an HTML element 
name; am I messing up expansion time and run time?


#lang racket

(require (planet neil/html-template:2:2))

(define-syntax-rule (expr-iter form ...)
  (begin
    (case (car 'form)
      [(title) (display (cadr 'form))]
      [(math) (eval (cadr 'form))]
      [(html) (html-template
               (eval (cadr 'form)))]) ...))

(expr-iter (title "sometitle")
           (math (+ 1 2))
           (html (p "hello")))


Best regards,
Philipp

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

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

Reply via email to