Oops, forgot to include the users list.

  _____  

From: Jos Koot [mailto:[email protected]] 
Sent: miércoles, 06 de abril de 2016 23:03
To: 'Richard Adler'
Subject: RE: [racket-users] macros within expressions.



You don't need a macro here. Why not simply:

(map point-y points)

May be your example is an extract where you realy need a macro.
In that case:

(define-syntax y-coord
  (syntax-id-rules ()
    [(y-coord lst) (map point-y lst)]))

(y-coord points)

You can't map a macro.
You could make a macro-mapper though:

(define-syntax-rule (map-macro macro arg) (map (λ (x) (macro x)) arg))
(define-syntax-rule (y-macro arg) (point-y arg))
(map-macro y-macro points)

But in general it is wise to AVOID MACROS.

Good luck, Jos

-----Original Message-----
From: [email protected] [ <mailto:[email protected]>
mailto:[email protected]]
Sent: miércoles, 06 de abril de 2016 22:27
To: Racket Users
Subject: [racket-users] macros within expressions.


I am trying to use a macro, y-coord, in the following way:

(struct point (x y))
(define points (list (point 25 25) (point 33 54) (point 10 120))
(map y-coord points)

I am expecting the result:
'(25 54 120)

and the error is "y-coord: bad syntax in: y-coord

Here is the macro:

(define-syntax y-coord
  (syntax-id-rules (map)
    [(map y-coord lst) (map (lambda (p)
                              (point-y p))
                            lst)]))

Can anyone help?
Thanks

--
You received this message because you are subscribed to the Google Groups
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to [email protected].
For more options, visit  <https://groups.google.com/d/optout>
https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to