Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lisp包名在我的数据中预先添加了自己,而我没有告诉它_Lisp - Fatal编程技术网

Lisp包名在我的数据中预先添加了自己,而我没有告诉它

Lisp包名在我的数据中预先添加了自己,而我没有告诉它,lisp,Lisp,这是我第一次使用lisp处理包。在封装数据和代码方面,我大致了解了它们的工作原理。它似乎与其他语言非常相似,我现在不需要担心它们之间的差异 但是,我遇到了一个问题,如果我在代码中设置了以下内容: (setf baseNames '(coffee wax blue chili stink green soy blackeyed garden)) 随后将以以下形式发布: (print baseNames) (PIZZABAGEL::COFFEE PIZZABAGEL::WAX PIZZABAGEL

这是我第一次使用lisp处理包。在封装数据和代码方面,我大致了解了它们的工作原理。它似乎与其他语言非常相似,我现在不需要担心它们之间的差异

但是,我遇到了一个问题,如果我在代码中设置了以下内容:

(setf baseNames '(coffee wax blue chili stink green soy blackeyed garden))
随后将以以下形式发布:

(print baseNames)
(PIZZABAGEL::COFFEE PIZZABAGEL::WAX PIZZABAGEL::BLUE PIZZABAGEL::CHILI PIZZABAGEL::STINK PIZZABAGEL::GREEN
比萨面包圈::大豆比萨面包圈::黑眼比萨面包圈::花园)

比萨饼是我包裹的名字。这是正常的行为吗?假设我想做一些类似的事情:

(position 'WAX baseNames)

我希望它会返回1,但由于包名在任何地方都在其前面,因此它会返回nil。我想知道我如何才能a)让它不在任何地方都预先准备好,或者b)使用它的正常做法是什么?我目前正在编写我自己的position函数,希望能够处理这个问题,但在这种情况下,这样做似乎是错误的。提前感谢您提供的任何提示或建议。

您遇到的是一些软件包混乱

无论何时使用读取器读取符号,该符号都会隐式继承当前包的包名

您可以在此处看到演示:

1]> (setf baseNames '(coffee wax blue chili stink green soy blackeyed garden))
(COFFEE WAX BLUE CHILI STINK GREEN SOY BLACKEYED GARDEN)
[2]> (export 'basenames)
T
[3]> (defpackage so (:use cl-user cl))
#<PACKAGE SO>
[4]> (in-package so)
#<PACKAGE SO>
SO[5]> (print basenames)

(COMMON-LISP-USER::COFFEE COMMON-LISP-USER::WAX COMMON-LISP-USER::BLUE
 COMMON-LISP-USER::CHILI COMMON-LISP-USER::STINK COMMON-LISP-USER::GREEN
 COMMON-LISP-USER::SOY COMMON-LISP-USER::BLACKEYED COMMON-LISP-USER::GARDEN) 
(COMMON-LISP-USER::COFFEE COMMON-LISP-USER::WAX COMMON-LISP-USER::BLUE
 COMMON-LISP-USER::CHILI COMMON-LISP-USER::STINK COMMON-LISP-USER::GREEN
 COMMON-LISP-USER::SOY COMMON-LISP-USER::BLACKEYED COMMON-LISP-USER::GARDEN)

这会失败,因为它在基名中查找
SO::WAX
(因为我们在
SO
包中),而不是
COMMON-LISP-USER::WAX
。这就是列表中的内容。这就是为什么失败的原因。(
CL-USER
COMMON-LISP-USER
的缩写/别名)

您遇到的是一些软件包混乱

无论何时使用读取器读取符号,该符号都会隐式继承当前包的包名

您可以在此处看到演示:

1]> (setf baseNames '(coffee wax blue chili stink green soy blackeyed garden))
(COFFEE WAX BLUE CHILI STINK GREEN SOY BLACKEYED GARDEN)
[2]> (export 'basenames)
T
[3]> (defpackage so (:use cl-user cl))
#<PACKAGE SO>
[4]> (in-package so)
#<PACKAGE SO>
SO[5]> (print basenames)

(COMMON-LISP-USER::COFFEE COMMON-LISP-USER::WAX COMMON-LISP-USER::BLUE
 COMMON-LISP-USER::CHILI COMMON-LISP-USER::STINK COMMON-LISP-USER::GREEN
 COMMON-LISP-USER::SOY COMMON-LISP-USER::BLACKEYED COMMON-LISP-USER::GARDEN) 
(COMMON-LISP-USER::COFFEE COMMON-LISP-USER::WAX COMMON-LISP-USER::BLUE
 COMMON-LISP-USER::CHILI COMMON-LISP-USER::STINK COMMON-LISP-USER::GREEN
 COMMON-LISP-USER::SOY COMMON-LISP-USER::BLACKEYED COMMON-LISP-USER::GARDEN)

这会失败,因为它在基名中查找
SO::WAX
(因为我们在
SO
包中),而不是
COMMON-LISP-USER::WAX
。这就是列表中的内容。这就是为什么失败的原因。(
CL-USER
COMMON-LISP-USER
的缩写/别名)

您遇到的是一些软件包混乱

无论何时使用读取器读取符号,该符号都会隐式继承当前包的包名

您可以在此处看到演示:

1]> (setf baseNames '(coffee wax blue chili stink green soy blackeyed garden))
(COFFEE WAX BLUE CHILI STINK GREEN SOY BLACKEYED GARDEN)
[2]> (export 'basenames)
T
[3]> (defpackage so (:use cl-user cl))
#<PACKAGE SO>
[4]> (in-package so)
#<PACKAGE SO>
SO[5]> (print basenames)

(COMMON-LISP-USER::COFFEE COMMON-LISP-USER::WAX COMMON-LISP-USER::BLUE
 COMMON-LISP-USER::CHILI COMMON-LISP-USER::STINK COMMON-LISP-USER::GREEN
 COMMON-LISP-USER::SOY COMMON-LISP-USER::BLACKEYED COMMON-LISP-USER::GARDEN) 
(COMMON-LISP-USER::COFFEE COMMON-LISP-USER::WAX COMMON-LISP-USER::BLUE
 COMMON-LISP-USER::CHILI COMMON-LISP-USER::STINK COMMON-LISP-USER::GREEN
 COMMON-LISP-USER::SOY COMMON-LISP-USER::BLACKEYED COMMON-LISP-USER::GARDEN)

这会失败,因为它在基名中查找
SO::WAX
(因为我们在
SO
包中),而不是
COMMON-LISP-USER::WAX
。这就是列表中的内容。这就是为什么失败的原因。(
CL-USER
COMMON-LISP-USER
的缩写/别名)

您遇到的是一些软件包混乱

无论何时使用读取器读取符号,该符号都会隐式继承当前包的包名

您可以在此处看到演示:

1]> (setf baseNames '(coffee wax blue chili stink green soy blackeyed garden))
(COFFEE WAX BLUE CHILI STINK GREEN SOY BLACKEYED GARDEN)
[2]> (export 'basenames)
T
[3]> (defpackage so (:use cl-user cl))
#<PACKAGE SO>
[4]> (in-package so)
#<PACKAGE SO>
SO[5]> (print basenames)

(COMMON-LISP-USER::COFFEE COMMON-LISP-USER::WAX COMMON-LISP-USER::BLUE
 COMMON-LISP-USER::CHILI COMMON-LISP-USER::STINK COMMON-LISP-USER::GREEN
 COMMON-LISP-USER::SOY COMMON-LISP-USER::BLACKEYED COMMON-LISP-USER::GARDEN) 
(COMMON-LISP-USER::COFFEE COMMON-LISP-USER::WAX COMMON-LISP-USER::BLUE
 COMMON-LISP-USER::CHILI COMMON-LISP-USER::STINK COMMON-LISP-USER::GREEN
 COMMON-LISP-USER::SOY COMMON-LISP-USER::BLACKEYED COMMON-LISP-USER::GARDEN)


这会失败,因为它在基名中查找
SO::WAX
(因为我们在
SO
包中),而不是
COMMON-LISP-USER::WAX
。这就是列表中的内容。这就是为什么失败的原因。(
CL-USER
COMMON-LISP-USER
的缩写/别名)

对位置的调用已经错误。“我希望这将返回1”。我希望它返回
NIL
。可能是阅读
位置的文档的好时机:这是什么,的软件实现-PRainer Joswig,我的意思是在我上面的位置调用中不要在蜡周围键入括号。我会编辑它来修正我的打字错误。当我在clisp解释器中运行(position'wax'(chili-wax-blue))时,它提供了我期望的结果。文档中还有什么我应该看的吗?雷纳,我明白你想告诉我的。我的位置函数没有使用正确的测试。它默认为=而不是等于。对位置的调用已经错误。“我希望这将返回1”。我希望它返回
NIL
。可能是阅读
位置的文档的好时机:这是什么,的软件实现-PRainer Joswig,我的意思是在我上面的位置调用中不要在蜡周围键入括号。我会编辑它来修正我的打字错误。当我在clisp解释器中运行(position'wax'(chili-wax-blue))时,它提供了我期望的结果。文档中还有什么我应该看的吗?雷纳,我明白你想告诉我的。我的位置函数没有使用正确的测试。它默认为=而不是等于。对位置的调用已经错误。“我希望这将返回1”。我希望它返回
NIL
。可能是阅读
位置的文档的好时机:这是什么,的软件实现-PRainer Joswig,我的意思是在我上面的位置调用中不要在蜡周围键入括号。我会编辑它来修正我的打字错误。当我在clisp解释器中运行(position'wax'(chili-wax-blue))时,它提供了我期望的结果。文档中还有什么我应该看的吗?雷纳,我明白你想告诉我的。我的位置函数没有使用正确的测试。它默认为=而不是等于。对位置的调用已经错误。“我希望这将返回1”。我希望它返回
NIL
。可能是阅读
位置的文档的好时机:这是什么,的软件实现-PRainer Joswig,我的意思是在我上面的位置调用中不要在蜡周围键入括号。我会编辑它来修正我的打字错误。当我在clisp解释器中运行(position'wax'(chili-wax-blue))时,它提供了我期望的结果。文档中还有什么我应该看的吗?雷纳,我明白你想告诉我的。我的位置函数没有使用正确的测试。使用包
CL-USER