我正在使用 SBCL、Emacs 和史莱姆。 因此,我可以这样做:CL-USER> (defvar example #'(lambda (x) (* x 20))) EXAMPLE CL-USER> (funcall example 10) 200 行。 它按预期工作。 使用库 D ...
我正在使用 SBCL、Emacs 和史莱姆。 因此,我可以这样做:CL-USER> (defvar example #'(lambda (x) (* x 20))) EXAMPLE CL-USER> (funcall example 10) 200 行。 它按预期工作。 使用库 D ...
在 Lisp 中,函数的参数在进入函数体之前首先被求值。 宏参数保持不被评估。 但有时,人们希望将存储在变量中的代码段注入到宏中。 这意味着首先评估宏的参数,然后在此评估结果上应用选择的宏。 必须求助于 为了实现这一点 - 但eval在不同的环境中表现不正确。 最好的事情是,如果可以做到: ...
我已经编写了一些使用回调调用嵌套函数的代码。 但我没有像预期的那样得到 output。 请查看代码: 我也尝试过使用 function 指针,但我也得到了与上面相同的 output。 ...
语境 使用像(lambda (List arg1 arg2 ... argn))这样的函数,我可以使用funcall / apply使用原始参数调用这些方法,从而修改 lambda 中的列表。 对于像(lambda (arg1 arg2 ... argn &key List))这样的 ...
我一直在环顾四周,但仍然不明白 funcall 是如何工作的。 如果有人可以就解决问题的方法向我提出建议,我将不胜感激。 我知道“乐趣”必须是一个谓词函数,但在那之后我被卡住了 顺便说一句,如果该项目用作函数的参数时函数返回 true,则该项目满足函数。 ...
我开始学习Lisp,并使用Lispworks个人版6.1.1,在评估基本功能时遇到了问题。 我能够在Scheme中正确设置它们,但是当我尝试在Lisp中评估它们时它们却无法正常工作。 我在Lisp中知道每个符号都有两个命名空间。 因此,我尝试编写用于组成两个过程的简单过程。 它在Sc ...
我正在创建一个简单的elisp测试器。 但是,我得到了错误的行为(我无法理解),如下所示。 我认为测试人员应该自然地返回t测试用例(:eq 'a 'a)和(:eq (return-symbol) 'a)因为我的测试人员也在下面的代码之前。 实际上并非如此。 以下代码已经超出了必要 ...
我目前正在尝试获取类的所有实例,并且我想使用ObjectSpace.each_object来实现这一点。 这是我在C中的实际代码: 但是,我不知道这是否真的是一件好事。 我想改用rb_funcall ,这也许是一种更清洁的方法。 我的问题是: 使用rb_funca ...
我对CL很新,目前正试图围绕mapcan , #' , funcall和closures。 这是一个闭包,它将谓词应用于数字n ,如果正确,则返回(list n) ,否则为nil : 我知道我需要调用funcall将这个闭包变成一个函数。 这很好用: 现在我尝试将以后创建的函 ...
此函数编译警告, fn已定义且从未在第一行中使用,并且fn是第二行中未定义的函数: 为什么? 一般性解释或其链接将是伟大的。 PD:完整日志: ...
为什么我们必须使用funcall在 Common Lisp 中调用高阶函数? 例如,为什么我们必须使用: 而不是更简单的: 来自过程背景,我对此感到有点惊讶,因为我更习惯的语言(例如 Python、C#)不需要区分。 特别是,至少在源代码级别,C# 编译器将其转换为类似func.invoke()的 ...