如果我運行以下常見的 lisp 代碼:
(print "A")
(print "B")
(print "C - No closing bracket"
sbcl --script ./test.lisp
列印A和B。之后,錯誤出現在預期中。
SBCL是否決議第一行(或換句話說“括號內的代碼”)并在進入下一部分之前立即執行它?或者它是否決議整個檔案并“標記”在 AST 中的特定點存在決議器錯誤?
uj5u.com熱心網友回復:
它以與load, compileetc相同的方式逐個讀取事物。它正在做這樣的事情(但更復雜):
(defun trivial-script-runner (f)
(let ((*package* *package*))
;; ... and other things
(with-open-file (in f)
(loop for form = (read in nil in)
until (eq form in)
do (eval form)))))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/373177.html
上一篇:當最后一個估算器不是轉換器時,如何使用scikit-learnPipeline進行轉換?
下一篇:從深層嵌套的json創建資料框
