Я хотел бы написать псевдоним racket
2htdp
функции/макросы, чтобы я мог перевести их на другой язык для своих детей.alias имя для макроса
Вещи, которые являются функциями Я могу просто написать псевдоним define
. У меня возникли проблемы с структурой big-bang
; Если я пытаюсь сделать псевдоним on-tick
, например, каждый раз я получаю big-bang: [new-name] clauses are not allowed within big-bang
.
Я пробовал различные варианты define-syntax
, но я не мог заставить его работать до сих пор (я сказал, что я полный новичок-новичок).
Что-то вроде это работает (ну, ladja
не определен):
#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))))
Но это не (вызывает ошибку):
#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))))
Я вижу, что big-bang
is a macro, так что объясняет проблему: я думаю, мне нужно было бы заставить мой макрос оцениваться первым, каким-то образом?
работает отлично, спасибо! –