以下helloworld函数只输出Hello,world
(defun helloworld ()
(format t "Hello, world"))
Run Code Online (Sandbox Code Playgroud)
我创建了一个A传递helloworld给函数的函数B:
(defun A ()
(B #'helloworld))
Run Code Online (Sandbox Code Playgroud)
功能B随后将函数函数C:
(defun B (fn)
(C #'fn))
Run Code Online (Sandbox Code Playgroud)
函数C然后调用函数(即,它调用helloworld):
(defun C (fn)
(funcall fn))
Run Code Online (Sandbox Code Playgroud)
当我运行程序时:
(A)
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
Error in FUNCTION [or a callee]: The function FN is undefined.
Run Code Online (Sandbox Code Playgroud)
为什么?
我如何解决它?
对或错?
Common Lisp有很多功能.所有这些功能都是使用这一小组核心功能构建的(或可以构建的):CAR,CDR,CONS,ATOM,EQ,QUOTE,COND,LAMBDA,LABEL,NULL.
如果答案是False,您能提供一个使用核心功能无法实现的功能示例吗?核心功能列表可能不完整,还需要另外两个核心功能吗?
我正在读的一本书[1]是这样说的:
\n\n\n编程语言中最有趣的发展之一是可扩展语言的创建,其语法和语义可以在程序内更改。最早和\n最常提出的语言扩展方案之一是宏定义。
\n
您能否给出一个扩展 Lisp 编程语言的语法和语义的 Lisp 宏示例(并附上解释)?
\n[1]解析、翻译和编译理论,第 1 卷解析:Aho 和 Ullman,第 58 页。
\n我想创建一个包含URL的列表,如下所示:
(setf assertion '(BookStore targetNamespace http://www.books.org))
Run Code Online (Sandbox Code Playgroud)
但这会导致此错误消息:
Error in READ [or a callee]: There is no package with the name HTTP.
Run Code Online (Sandbox Code Playgroud)
为什么URL会产生错误?
如何将URL作为列表元素包含在内?