Мне нравится создавать REPL с моими собственными типами данных, но я не люблю писать одни и те же шаблонные функции снова и снова.
Так что это орех, который беспокоит меня.
У меня есть собственный набор примитивных типов данных (define primitives '("mytrue" "myfalse" "mynumber" ...))
Также у меня есть (define primitiveTesters (list "mytrue?" "myfalse?" "mynumber?" ... )
Теперь проблема в том, что я просто хочу применить (карту) или макрос, чтобы получить тип данных? процедуры, которые в основном просто проверяют, существует ли автомобиль записи (mynumber . ( . ))
.
Так что что-то похожее на (mynumber? (car (mynumber.(1.))) => #t
в конце. Но для этого мне нужно (define mynumber? (lambda (...)(...))
Мой макрос для пакетной обработки выглядит так, но мне просто не повезло добавить <variable>
.
(define-syntax define-batching
(syntax-rules ()
((_ value expr)(define value expr))
((_ value) value)
((_ value1 value2 ...) (begin (define value1 expr) (define-batching test2...)))
))
Так я зашел в тупик схемы?
Я видел нечто подобное, кажется, в Emacs Lisp.
В итоге я ищу:
(define checker '(audi? volkswagen? mercedes?))
(define datatype '(audi volkswagen mercedes))
(map define-checker checker datatype )
or
(define-checker (car checker) (car datatype))