reader-macro

    7热度

    3回答

    我在编译Lisp代码文件到字节码或原始程序集(或者fasl文件)时读取宏变得有点麻烦。或者,也许我确实了解它,但不知道。我真的很困惑。 当您使用读取宏时,您是否必须有可用的源代码? 如果这样做,那么您必须执行构成读取宏功能的源代码。如果你不这样做,那么当你可以做像read-char这样的东西时,它们如何工作?要做到这一点,如果你想让读取的宏使用上述变量,你必须执行所有的之前的代码,所以这变成了运行

    3热度

    3回答

    我想在Clojure中使用任意数量的参数,但实际上并没有使用它们。所以我发现了%&('function arg'为函数字面量)和#_('discard'reader macro)。 但它们如何协同工作令我感到奇怪: => (macroexpand `#(... #_ %&)) (fn* [& rest__125459__125460__auto__] (...)) 这看起来像我想要的东西(似

    3热度

    1回答

    我决定我的生日是尝试修复我的Lisp问题的好时机。 我收到了某人的Lisp程序来运行实验。它在OS X环境下运行良好。但是,我无法在Windows 7或Ubuntu上运行它。该程序使用Act-R 6.2来运行模型。当我尝试加载.lisp文件时,我收到以下错误: :Reader error on #<BASIC-FILE-CHARACTER-INPUT-STREAM ("*path*"/28 UTF

    2热度

    1回答

    我想以这样的方式定义阅读器宏,它们只影响某个特定的包/文件。 到目前为止,我能够加载与 (let ((*readtable* (copy-readtable))) (load "file.lisp")) 有没有更好的办法做到这一点的文件吗?

    4热度

    1回答

    我正在Common Lisp编写自己的x86-64汇编程序,它为x86-64的子集生成正确的二进制代码。我使用自定义阅读器宏将汇编代码转换为语法树,并按预期工作。 什么,我试图完成是允许使用汇编代码,这样我可以用Lisp的作为我的汇编宏语言里面Lisp代码。我使用#a作为宏观调度字符,并使用#e表示读取器结束。内部阅读器#l更改为Lisp模式,#a回到装配模式,#e(以读取器宏的信号结束)应该在两

    2热度

    1回答

    我正在尝试制作一个将@this转换为“this”的阅读器宏。 这是我目前有: (defun string-reader (stream char) (declare (ignore char)) (format nil "\"~a\"" (read-line stream t nil t)) ) (set-macro-character #\@ #'string-read

    5热度

    1回答

    Common Lisp中有一些读取宏,如'#'#P,但是我该如何编写读取宏? 像这样: #T"hello world" ====================> (gettext "hello world")

    3热度

    1回答

    此问题已重新插入到this和this for Elisp。基本上,如何阅读和评估反向报价?什么过程正在发生?标准是否对此有任何说明? 以下是我所期望的,但它不会发生:符号`是读者宏观和被翻译成某种(BACKQUOTE ...)宏/特殊形式(类似于'被翻译成(QUOTE ...))。这不会发生,事实上,Common Lisp甚至没有一个BACKQUOTE宏。 发生了什么(SBCL): CL-USER

    0热度

    2回答

    这里的情况: CL-USER> [bookid] #<CLSQL-SYS:SQL-IDENT-ATTRIBUTE BOOKID> CL-USER> (sql-expression :attribute 'bookid) #<CLSQL-SYS:SQL-IDENT-ATTRIBUTE BOOKID> CL-USER> [books.bookid] #<CLSQL-SYS:SQL-IDENT

    0热度

    1回答

    标准共口齿不清定义了许多读者的宏如(和)进行分组,'为quote,"字符串报价,|的符号报价,#为调度宏等,现在我想禁用所有这些,用我自己的我必须逐一拨打set-macro-character来禁用它们,然后定义我自己的。 我发现有一种方法可以通过调用(setf *readtable* (copy-readtable nil))来恢复所有阅读器宏到标准阅读器宏,但有没有办法将它们设置为空(即所有字