Ich möchte einige racket
2htdp
Funktionen/Makros aliasieren, so dass ich sie in einer anderen Sprache für meine Kinder übersetzen kann.Alias ein Name für die Klausel eines Makros
Dinge, die sind Funktionen kann ich einfach alias mit define
. Ich habe Probleme mit der big-bang
Struktur; Wenn ich zum Beispiel versuche, Alias on-tick
zu aliasieren, bekomme ich jedesmal big-bang: [new-name] clauses are not allowed within big-bang
.
Ich habe verschiedene Varianten von define-syntax
versucht, aber ich konnte es bisher nicht funktionieren lassen (das sagte, ich bin ein kompletter Schläger Neuling).
So etwas wie dies funktioniert (na ja, ist ladja
nicht definiert):
#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))))
Aber dies nicht (löst den Fehler):
#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))))
Ich sehe, dass big-bang
is a macro, so dass erklärt das Problem: Ich denke, ich müsste in der Lage sein, mein Makro zuerst zu evaluieren, irgendwie?
funktioniert gut, danke! –