相关疑难解决方法(0)

Common Lisp中的eq,eql,equal和equalp有什么区别?

什么之间的区别eq,eql,equalequalp,在Common Lisp的?我知道其中一些检查类型,其中一些检查所有类型,但哪个是哪个?什么时候比其他人更好用?

syntax equality common-lisp

69
推荐指数
3
解决办法
3万
查看次数

为什么CASE不能用于字符串值而只能用于符号值?

在书中的'lisp之乡'我读过

因为case命令使用eq进行比较,所以它通常仅用于对符号值进行分支.除其他外,它不能用于分支字符串值.

请解释原因?

lisp common-lisp land-of-lisp

5
推荐指数
3
解决办法
164
查看次数

为什么有这么多方法来比较平等?

如果我想比较两个值是否相等,有多种选择,例如:

\n\n
    \n
  • eq对于符号
  • \n
  • =对于数字
  • \n
  • char-equal对于角色
  • \n
  • string-equal对于字符串
  • \n
  • eql用于符号、数字和字符串
  • \n
  • equal对于除符号之外的所有内容
  • \n
  • \xe2\x80\xa6
  • \n
\n\n

(我希望到目前为止我做对了。)

\n\n

现在,作为 Lisp 初学者,我的问题是:为什么会这样?这只是出于“历史原因”还是拥有所有这些可能性确实有好处?

\n\n

我知道为什么问题总是很难回答,并且可能是基于意见的,但我认为(猜测)高级 Lisp 开发人员普遍同意一些最佳实践。

\n

lisp comparison equality common-lisp

4
推荐指数
1
解决办法
445
查看次数

clisp:从列表列表中删除

(删除'(1 2)'((1 2)(1 3)))不会从常见的lisp列表中删除'(1 2)..(我认为它使用eq而不是相等)我们还有其他吗?替换从clisp中的列表列表中删除元素??

lisp clisp common-lisp

2
推荐指数
1
解决办法
3553
查看次数

即使字符串存在于列表中,`member` 也返回 `NIL`

通用 Lisp。

我正在尝试确定给定列表中是否存在字符串。

我的目标是拥有, (member searched-string my-list) 但我不断得到NIL

为什么(member "foo" '("foo" "bar"))返回NIL

在此处输入图片说明

lisp common-lisp

2
推荐指数
1
解决办法
67
查看次数

删除lisp中列表中的重复列表

如何删除common-lisp中列表中的重复列表?我试过这个:

(remove-duplicates '( (1 2 3) (1 2 3)))                           
Run Code Online (Sandbox Code Playgroud)

但它评估的 ((1 2 3) (1 2 3))不是((1 2 3)).

谢谢.

lisp common-lisp

1
推荐指数
1
解决办法
558
查看次数

相当于LIST的LISP'dister'功能

我有以下列表:

(1 (2))
Run Code Online (Sandbox Code Playgroud)

我想用(2(3))替换(2)以获得:

(1 (2 (3)))
Run Code Online (Sandbox Code Playgroud)

如下使用subst不会返回所希望的结果:

(subst '(2 (3)) '(2) '(1 (2)))
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来执行替换?

lisp common-lisp

1
推荐指数
1
解决办法
582
查看次数

如何将列表中的元素移动到LISP中列表的前面

我试图检查一个单词是否是列表的元素.然后它不会将单词添加到列表的前面,但是如果它将该单词移动到列表的前面.我可以将单词添加到列表中,如果它还没有,但我不知道如果它已经在列表中,如何将元素移动到列表的前面.这是我的代码:

(defun movetofront (word lst)
  (cond
    ((member word lst) 
     (remove word lst))
    (T (cons word lst)))) 
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp

1
推荐指数
1
解决办法
358
查看次数

在Common Lisp中,如何在列表中搜索子列表

如果我想查找(x 2)是否存在于包含((x 2)(y 2)(z 2))的列表中,例如,我该怎么做?

(member '(x 2) '((x 2) (y 2) (z 2))) 
Run Code Online (Sandbox Code Playgroud)

如找到的那样返回NIL

谢谢您的帮助

common-lisp

0
推荐指数
1
解决办法
1458
查看次数

标签 统计

common-lisp ×9

lisp ×7

equality ×2

clisp ×1

comparison ×1

land-of-lisp ×1

syntax ×1