Vorrei aggiungere alias alcune funzioni/macro racket
2htdp
, in modo da poterle tradurre in un'altra lingua per i miei figli.alias un nome per la clausola di una macro
Cose che sono funzioni Posso semplicemente alias con define
. Ho problemi con la struttura big-bang
; Se provo ad aggiungere alias on-tick
ad esempio, ogni volta che ottengo big-bang: [new-name] clauses are not allowed within big-bang
.
Ho provato varie varianti di define-syntax
ma non riuscivo a farlo funzionare fino a quel momento (ho detto, sono un principiante completo di racket).
Qualcosa di simile a questo funziona (bene, ladja
non è definito):
#lang racket
(require 2htdp/universe 2htdp/image)
(big-bang 0
(on-tick (lambda (x) (+ x 1)))
(to-draw (lambda (x) (place-image ladja 150 x (prazni-prostor 300 300))))
(stop-when (lambda (x) (= x 300))))
Ma questo non lo fa (fa scattare l'errore):
#lang racket
(require 2htdp/universe 2htdp/image)
(define new-name on-tick)
(big-bang 0
(new-name (lambda (x) (+ x 1)))
(to-draw (lambda (x) (place-image ladja 150 x (prazni-prostor 300 300))))
(stop-when (lambda (x) (= x 300))))
vedo che big-bang
is a macro, in modo che spiega il problema: immagino che dovrei essere in grado di forzare prima la valutazione della mia macro, in qualche modo?
funziona alla grande, grazie! –