我喜欢用我自己的数据类型构建一个 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))