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

    0熱度

    2回答

    我正在閱讀cl-fad/load.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))來恢復所有閱讀器宏到標準閱讀器宏,但有沒有辦法將它們設置爲空(即所有字