推送不会修改作为函数参数的列表[重复]

2023-12-11

我是 common lisp 的新手,所以希望有人能向我澄清这一点:

假设我们有一个列表并想要添加一个项目push修改它:

CL-USER> (defparameter xx '(1 2 3))
XX
CL-USER> xx
(1 2 3)
CL-USER> (push 100 xx)
(100 1 2 3)
CL-USER> xx
(100 1 2 3)

正如预期的那样。但是当我尝试对该函数执行相同操作时,它不会修改列表:

CL-USER> (defun push-200 (my-list)
           (push 200 my-list))
PUSH-200
CL-USER> (push-200 xx)
(200 100 1 2 3)
CL-USER> xx
(100 1 2 3)

所以我尝试比较参数和我的列表,如下所示:

CL-USER> (defun push-200 (my-list)
           (format t "~a" (eq my-list xx))
           (push 200 my-list))

WARNING: redefining COMMON-LISP-USER::PUSH-200 in DEFUN
PUSH-200
CL-USER> (push-200 xx)
T
(200 100 1 2 3)
CL-USER> xx
(100 1 2 3)

它说对象是相同的。 所以问题是:我在这里忽略了什么?


(defun push-200 (my-list)
  (push 200 my-list))

这修改了变量my-list。该变量现在指向一个新的cons.

基本上是:(setq my-list (cons 200 my-list).

(push-200 xx)

Common Lisp 评估xx到一个值并将列表传递给push-200. xx传递的不是它的值,而是它的值。所以,Lisp系统无法修改xx指出一个不同的缺点,因为它没有通过。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

推送不会修改作为函数参数的列表[重复] 的相关文章

  • 传递到 mvn exec:java 时保留参数间距等

    我有一个启动 Maven exec java 进程的 shell 脚本 exec mvn exec java Dexec mainClass Dexec args 现在可悲的是如果我跑步 myMagicShellScript arg1 ar
  • “date $1”参数化查询中的 PostgreSQL 语法错误

    尝试参数化我的 SQL 查询 使用 libpq 函数PQexec参数 http www postgresql org docs current static libpq exec html 我陷入了语法错误 SELECT date 1 错误
  • 适用于具有不同数量数据字段的用户的功能

    这个问题是我练习的时候产生的教程中的观察者主题 http mishadoff com blog clojure design patterns episode 10 observer我试图将该功能应用于用户 但无法使用用户的数据字段 例如姓
  • html 表单发布到 Flex 应用程序

    我有一个基本完成的 Flex 应用程序 它使用 Zend AMF 来连接 提供数据 我的应用程序确实有一个登录屏幕 看起来工作正常 现在我想在我的网站上添加另一个登录表单 允 许用户输入用户名 密码 提交表单时应将数据传递给 Flex 应用
  • C 编程:正向变量参数列表

    我正在尝试编写一个函数 它接受可变数量的参数 如 printf 执行一些操作 然后将变量列表传递给 printf 我不知道如何做到这一点 因为它似乎必须将它们推入堆栈 大约是这样的 http pastie org 694844 http p
  • 将数组中的所有值作为参数传递给函数

    我有一个值数组 a b c d 我需要将它们作为参数传递给函数 window myFunction a b c d 如果我可以将数组 对象传递到函数中 那么这会更容易 但这些函数是由其他人编写的或已经存在 我无法更改它们 它们需要作为单独的
  • Javascript 函数指针,以参数作为函数中的参数

    不确定标题的措辞是否正确 或者是否有更好的表达方式 但我认为还可以 无论如何 到目前为止我了解以下内容 a b a b c foo 其中 foo 是在其他地方定义的函数 不接受任何参数 只会导致函数 a b 使用上述参数运行 然后可以在函数
  • JavaScript 中的可选参数

    如果缺少剩余参数 为什么该函数不会抛出错误 showStatistics Mark Teixeira New York Yankees 1st Base 这是定义的函数 function showStatistics name team p
  • Spring 3 -- 带有 2 个按钮的表单,向控制器方法发送 2 个参数

    我有一个带有 2 个参数的 Spring 3 MVC 表单 我试图发送到我的控制器方法 但收到 404 错误 此问题的不同之处在于 表单有 2 个提交按钮 单击的提交按钮指示其中一个参数的值 这是我的表格
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • 在方法内部执行方法

    我目前正在 FreeCodeCamp 中进行 JavaScript 练习 我的代码应该使用的测试用例之一是函数调用 如下所示 addTogether 2 3 这是我得到的基本功能 function addTogether return 当我
  • 传递数组时在 C 中的函数参数中强制指定数组大小

    Context 在 C 中 我有一个以数组作为参数的函数 该参数用作该函数的输出 输出的大小始终相同 我会 让阅读代码的人清楚所需的大小 不过它已经在函数注释中了 理想情况下 编译会输出警告或错误 这样我就可以在编译时而不是运行时防止出现问
  • 如何在Python中使用getopt/OPTARG?如果给出太多参数 (9),如何转移参数?

    如何在Python中使用getopt optarg 这是我如何做到这一点的示例 我通常使用相同的基本模板 import sys import getopt try opts args getopt getopt sys argv 1 m p
  • Bash 和双引号传递给 argv

    我重新设计了这个示例以使其简单 但我想做的是在 bash shell 执行它时获取一个嵌套双引号字符串作为单个 argv 值 这是脚本示例 set x command1 key1 value1 key2 value2 key3 value3
  • 从 using 语句中修改值类型是否是未定义的行为?

    这确实是一个分支这个问题 https stackoverflow com questions 4642665 why does capturing a mutable struct variable inside a closure wit
  • 如何从 SBCL 解释器将特定函数写入文件?

    假设我在没有 SLIME 的情况下玩过 SBCL 没有任何简单的解释器 现在我想将几个函数保存在一个文件中 不是核心图像 只是文本形式的一些代码 我该怎么做呢 有两种方法可以做到这一点 使用DRIBBLE and or FUNCTION L
  • Common Lisp 反引号/反引号:如何使用?

    我在使用 Lisp 的反引号读取宏时遇到问题 每当我尝试编写一个似乎需要使用嵌入式反引号的宏时 例如 w x y 来自保罗 格雷厄姆的ANSI 通用 Lisp 第 399 页 我不知道如何以编译的方式编写代码 通常 我的代码会收到一整串错误
  • Haskell 中的参数数量和无点 [重复]

    这个问题在这里已经有答案了 对于多重模式匹配 不同数量的参数是不可能的 即使是无点的 foo True b b 2 foo id 例如 不起作用 但 foo True 2 foo id 做 有时我们只能在函数的一部分使用 point fre
  • Python argparse 以不同的方式处理参数

    我想创建一个可选参数 它将是 双破折号和一个空格 并将其后面的所有内容作为其值 问题是其他一些可选参数可能会出现在 我不希望将它们解析为可选参数 而是解析为 例如 python prog1 foo 1 bar 2 Here foo and
  • 如何在类型提示中定义元组或列表的大小

    有没有办法在参数的类型提示中定义元组或列表的大小 目前我正在使用这样的东西 from typing import List Optional Tuple def function name self list1 List Class1 if

随机推荐

  • Windows 错误 5:尝试在 Windows 中删除目录时访问被拒绝

    我正在尝试删除一个目录 但是当我运行代码时 它给出 Windows 错误 5 访问被拒绝 这是我的代码 在 Release 文件夹中 有一个名为OD if os path exists os path join get path for o
  • 具有固定行数的 ddply

    我想按 行数 分解数据 也就是说 我想向我的函数发送固定数量的行 当我到达数据帧的末尾 最后一个块 时 我只需要发送该块 无论它具有固定的行数还是更少 像这样的东西 ddply df 8 rows fun somefunction 如果你想
  • Odoo 8 - 如何更改页面标题?

    我想知道如何更改页面标题并从中删除 Odoo https www odoo com forum help 1 question change login page title 34874我尝试了这个 但我什么也没发现 标题使用标准 html
  • Python:运行进度条并同时工作?

    我想知道如何同时运行进度条和其他一些工作 然后当工作完成时 停止Python 2 7 x 中的进度条 import sys time def progress bar while True for c in sys stdout write
  • 当 DIV 的高度设置为“100%”时,为什么计算出的 DIV 高度大于其内容(如 svg)? [复制]

    这个问题在这里已经有答案了 这是我的代码 div align center style width 100 height 100 padding 0px margin 0px div
  • JavaScript for 循环索引奇怪[重复]

    这个问题在这里已经有答案了 我对 JS 比较陌生 所以这可能是一个常见问题 但我在处理 for 循环和 onclick 函数时注意到一些奇怪的事情 我能够用这段代码复制这个问题
  • 如何比较数组?还有改变属性?

    我是新的 ios 开发人员 我想比较和更改属性 数组1 对象1 对象2 对象3 对象4 数组2 对象2 对象4 对象5 对象8 比较数组 1 和数组 2 如果 Array2 中存在相同的对象 请更改对象中的属性 在上面的例子中 Object
  • 如何以 root 权限启动 QProcess?

    我需要启动gphoto2来自 Qt 程序 我这样做 QString gphotoProgram usr bin gphoto2 QStringList gphotoArguments gphotoArguments lt lt captur
  • 如何修复 Linux 中的“usr/bin/google-chrome 不再运行,因此 ChromeDriver 假设 Chrome 已崩溃”错误? [复制]

    这个问题在这里已经有答案了 我正在尝试设置一个 jenkins 服务器来在 Amazon Linux 上使用 Selenium webdriver 3 142 0 和 ruby 2 3 7 托管我的自动化框架 如果我尝试使用我的脚本调用 c
  • 从一堆对象中提取一个对象并检测边缘

    在我的大学项目中 我需要通过检测叶子的边缘来根据植物叶子的形状来识别植物的种类 我使用OpenCV 2 4 9和C 但源图像是在植物的真实环境中拍摄的 并且有不止一片叶子 请参阅下面的示例图片 所以这里我需要提取一片叶子的边缘图案来进一步处
  • 在 Visual Studio 环境中将第一个自定义对话框添加到 WIX

    我正在使用 Visual Studio 构建我的 wix 文件 到目前为止 我有一个文件 Product wxs 它可以进行简单的安装 现在我想添加一些自定义对话框 我认为从下面的两篇文章中 我了解了如何做到这一点 在我设置了环境之后 ht
  • 基底存储中私有变量的可能性

    是否可以将私有变量存储在底层存储中 特别是以以下形式存储并在私有函数中访问它们 derive Encode Decode Default Clone PartialEq Debug pub struct MyStruct id Hash t
  • python:ext4 文件系统中 os.path.exists 的复杂性?

    有谁知道 os path exists 函数在带有 ext4 文件系统的 python 中的复杂性是多少 使用的底层目录结构Ext4 and Ext3 与中完全相同Ext2 Ext3添加日记 Ext4改善日记 日记与你的问题无关 最初 Ex
  • 列出物理驱动器空间

    我有大约 200 台服务器 我需要获取磁盘空间和逻辑驱动器空间详细信息 可用空间 已用空间和总空间 这是我的 PowerShell 查询 infoObjects New Object PSObject foreach machine in
  • 在 Firefox 中使用 css 转换时边框渲染不正确

    我有一个像这样的简单 CSS 箭头 arrow brown height 18px width 18px border top 6px solid 39170b border right 6px solid 39170b moz trans
  • UITextView 或 UILabel Swift 上图像的自定义项目符号

    我正在创建一个应用程序 它基本上是一个大型网站的移动版本 该网站有一个特定区域列出了产品功能 每个功能都标有独特的自定义图像 有没有办法快速做到这一点 本质上 创建一个字符串项目符号列表 但使用小图像作为项目符号点 将 UITextView
  • 如何插入重新启动游戏选项?

    我希望在骰子游戏结束时有一个选项 上面写着 您想重新启动吗 是还是不是 如果用户输入 是 游戏就会重新启动 并且会无限次 直到用户玩够游戏并退出 我知道你可以用循环来做到这一点 但是怎么做呢 import random print Dice
  • Java程序如何获得自己的进程ID?

    如何获取我的 Java 进程的 ID 我知道有几种依赖于平台的技巧 但我更喜欢更通用的解决方案 不存在可以保证在所有 jvm 实现中工作的独立于平台的方法 ManagementFactory getRuntimeMXBean getName
  • sed 就地编辑文件

    如何编辑文件single sed命令 目前 我必须手动将编辑的内容流式传输到新文件中 然后将新文件重命名为原始文件名 I tried sed i 但我的 Solaris 系统说 i是一个非法的选择 有不同的方法吗 The i option无
  • 推送不会修改作为函数参数的列表[重复]

    这个问题在这里已经有答案了 我是 common lisp 的新手 所以希望有人能向我澄清这一点 假设我们有一个列表并想要添加一个项目push修改它 CL USER gt defparameter xx 1 2 3 XX CL USER gt