gpt4 book ai didi

function - 为什么我不能在 Common lisp 中使用从列表中提取的函数符号(#')?

转载 作者:太空宇宙 更新时间:2023-11-03 18:44:58 24 4
gpt4 key购买 nike

第一个不起作用。但是第二个有效,这让我很困惑..谁能解释一下?

CL-USER> (funcall (first '(#'+ +)) 1)
; Evaluation aborted on #<TYPE-ERROR expected-type:
; (OR FUNCTION SYMBOL) datum: #'+>.
CL-USER> (funcall #'+ 1)
1

最佳答案

#'是一个阅读器宏。 #'+(function +)的缩写。 ' 是扩展为 (quote …) 的阅读器宏。后者返回未评估的参数。所以,'(#'+ +) 产生 ((function +) +) (#'+ 将变成 ( function +) 在读取时)。 first 只是列表 (function +),它不是函数。现在,(function +) 打印为 #'+,这是您在调试器中看到的。

使用非文字列表将起作用:

CL-USER> (funcall (first (list #'+ '+)) 1)
1

关于function - 为什么我不能在 Common lisp 中使用从列表中提取的函数符号(#')?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10521710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com