CLISP - 反转简单列表

2024-04-01

我必须反转简单(单维)列表的元素。我知道有一个内置的反向函数,但我不能用它来做这个。

这是我的尝试:

(defun LISTREVERSE (LISTR)
    (cond
        ((< (length LISTR) 2) LISTR) ; listr is 1 atom or smaller
        (t (cons (LISTREVERSE (cdr LISTR)) (car LISTR))) ; move first to the end
    )
)

输出非常接近,但是是错误的。

[88]> (LISTREVERSE '(0 1 2 3)) 
((((3) . 2) . 1) . 0)

所以我尝试使用append代替cons:

(t (append (LISTREVERSE (cdr LISTR)) (car LISTR)))

但得到这个错误:

*** - APPEND: A proper list must not end with 2

有什么帮助吗?


我可以给你一些建议,因为这看起来像家庭作业:

  • 递归的基本情况是列表为空 (null) 时,并且not当列表中的元素少于两个时
  • 考虑定义一个带有额外参数的辅助函数,即在空列表中初始化的“累加器”。对于原始列表中的每个元素,cons它位于累加器的头部。当输入列表为空时,返回累加器

顺便说一句,上述解决方案是尾递归的。

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

CLISP - 反转简单列表 的相关文章

  • 阅读宏:你用它们做什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 LISP 中使用“ash”执行二分查找?

    所以 我现在正在阅读 Land of Lisp 事实证明 Lisp 与我见过的其他编程语言有很大不同 无论如何 本书提供了一些我们要输入到 CLISP REPL 中的代码 defparameter small 1 defparameter
  • Clozure Common Lisp - TCP 套接字编程 - 发送回复

    我有一个非常小的程序 它打开一个套接字并接受一个连接 然后它会获取远程 IP 和端口 我想向远程计算机 telnet 发送一条短信并关闭连接 我无法确定哪个函数用于向 telnet 客户端发送消息 The Clozure手册 http cc
  • 如何理解clojure的lazy-seq

    我正在尝试理解 Clojurelazy seq运算符 以及惰性求值的一般概念 我知道这个概念背后的基本思想 表达式的求值被延迟 直到需要该值为止 一般来说 这可以通过两种方式实现 在编译时使用宏或特殊形式 在运行时使用 lambda 函数
  • 以下函数式编程模式的正确术语是什么?

    我听说它被称为stream http mitpress mit edu sicp full text sicp book node72 html as an 无限列表 http en wikibooks org wiki Clojure P
  • Lisp 当前内存使用情况

    我需要从 Common Lisp 程序中找出当前使用了多少内存 我知道没有可移植的方法 标准函数room以文本形式将信息打印到标准输出 而不是将其作为值返回 但是sb kernel dynamic usage在 SBCL 工作 其他 Com
  • let* 和 set 之间的区别?在 Common Lisp 中

    我正在从事一个基因编程爱好项目 我有一个函数 宏设置 当以 setq setf 形式评估时 将生成一个如下所示的列表 setq trees make trees 2 gt x abs x 然后它将绑定到 lambda 函数
  • 任意类型说明符上的 Defmethod?

    我想做的是 defgeneric fn x defmethod fn x integer 1 Positive integer defmethod fn x integer 1 Negative integer 我想要一个可以与任意类型说明
  • 宏扩展可以包含(声明...)表达式吗?

    Common Lisp Hyperspec 规定 宏形式不能扩展为声明 声明表达式必须显示为它们引用的形式的实际子表达式 我对 扩展到 的含义感到困惑 由于显而易见的原因 如下宏将不起作用 defmacro optimize fully d
  • 将列表传播到父代 sexp 中

    在任何 lisp 中是否有一种形式可以在父 sexp 中 传播 列表 喜欢 spread 1 2 3 gt 1 2 3 有两种方法可以做到这一点 哪个更好取决于您最终想要什么 一般来说 您可以使用 inside 反引号 表格如下 被评估以生
  • 在 Java Runtime.getRuntime().exec(...) 中使用引号和双引号

    我正在尝试在 Mac OSX 中从 Java 启动 Lisp 映像 使用控制台中的图像 我输入以下内容 lisp image eval package method some argument 一切都运行良好 在Java中 我在使用传递引号
  • 在Emacs中,这个错误是什么意思? “警告:运行时需要 cl 包”

    我正在字节编译一个模块 它给了我这个警告 Warning cl package required at runtime 为什么这是一个警告 我很清楚我正在使用cl包裹 事实上有一个 require cl 模块中的语句 使用有什么问题吗cl
  • windows下无法用emacs + sbcl启动slime

    我想配置我的 emacs 以使用 SLIME 和 SBCL emacs 文件如下所示 add to list load path D app slime setq inferior lisp program sbcl require sli
  • 在我的 Linux 机器上安装 lisp

    我使用 Vim 作为我的编辑器 Practical common Lisp 建议安装 Lispbox 我不知道如何使用 emacs 不知道如何用那个 T T 运行 lisp 代码 之后我找到了一个名为 limp vim 的 vim lisp
  • gensym 在 Lisp 中做什么?

    我听到一些同学谈论他们如何使用该功能gensym为此 我问他们它做了什么 甚至在网上查了一下 但我真的无法理解这个函数的作用是什么两者都不为什么或何时最好使用它 特别是 我对它在 Lisp 中的作用更感兴趣 谢谢你们 独特且未被拘禁的符号
  • F# 类型提供程序与 Lisp 宏

    我一直在阅读有关 F 3 0 类型提供程序的内容 例如here http msdn microsoft com en us library hh156509 aspx 并且它们似乎基于一种编译时代码生成 在这方面我想知道它们与 Lisp 宏
  • 为什么在 emacs-lisp 中的函数参数之前使用#'?

    我熟悉 Emacs Lisp 但不熟悉 Common 或任何其他 Lisp 一些 Lisp 程序员建议 例如emacs 的基本功能 https stackoverflow com questions 17076646 a basic fun
  • 评估 Common Lisp 宏的参数

    我想制作一个宏 其行为取决于它的参数之一 例如 defclass myvar l initarg l reader l defparameter mv1 make instance myvar l 10 defmacro mac1 v pr
  • 从when语句内的函数返回

    我想做的就是使用 when 语句返回一个值 我想要以下功能 if x return y 我正在尝试使用 when x y 但是when语句并没有以退出函数并返回y的方式进行计算 它只是愉快地继续下一行 有没有办法做到这一点而不需要制作一个看
  • 学习 Lisp 的资源 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • 如何在 IIS 10 上配置缓存?

    我有一个网站 并且启用了缓存 如下所示 为服务器启用缓存 为我正在测试的网站启用缓存 在响应标头中 我将整个网站的网页内容过期时间设置为 30 天 没有针对任何特定文件夹的设置 为文件 css js png woff2 启用缓存 在 Chr
  • 在 Kotlin 中为 API 级别小于或等于 16 创建 Date 对象

    这听起来可能非常有趣和基本 但我正在努力通过将纪元到它的秒数传递给 Kotlin 来创建 DateTime 类型的对象 我得到的示例要么是需要 API 级别 26 的库 要么只是讨论从 DD MM YYYY 字符串到其他字符串的格式转换 到
  • 使用单元格按钮操作传递多个参数

    NOTE 我不需要任何关于使用 UITableview 的 didselect 委托发送数据的建议 myButton h import
  • 在 UITableView 中保留占位符单元格

    我有一个 UITableView 我永远不想低于 1 个单元格 它是一个目录读数 如果目录中没有文件 它有一个单元格显示 无文件 在编辑模式下 有一个用于创建文件的奖励单元格 因此编辑模式永远不会低于两个单元格 可能只是睡眠不足让我现在无法
  • 避免在 sweave/pgfsweave 编译期间显示数字

    使用 sweave pgfsweave 进行编译时 每次在 R 中创建图形时 它都会显示在图形窗口中 在 sweave 编译过程中 这在许多情况下很有帮助 因为我可以在编译文档时看到图形的样子 但是当我通过 ssh 编译一个大文档时 这可能
  • Marshal.GenerateGuidForType(Type) 和 Type.GUID 有什么区别?

    Type classType typeof SomeClass bool equal Marshal GenerateGuidForType classType classType GUID 我还没有发现不符合这个条件的案例 So 为什么以
  • 从程序内调用 daemon(0,0) 和在后台启动程序并重定向其输出有区别吗

    在程序 progX 开头使用以下代码有什么区别 if daemon 0 0 1 printf daemon error s strerror errno 或通过以下命令运行 progX progX 2 gt dev null 1 gt de
  • 无法加载 C++/CLI DLL 资源

    我只是想查看资源名称 但什么也没有出现 我在 Visual Studio 2010 中制作并编译了一个 C CLI 托管 DLL 并添加了一些资源文件作为测试 一个图标和一个位图 我已经检查过 PE Explorer 资源肯定在那里 我的简
  • Grails - 按域关系属性排序(使用 createCriteria())

    我有两个具有 1 n 关系的域类 import Action class Task Action actionParent String taskName and class Action String actionName 我有一个任务列
  • 如何获取每个 Kotlin 的当前索引

    如何在foreach循环中获取索引 我想打印每第二次迭代的数字 例如 for value in collection if iteration no 2 do something 在java中 我们有传统的for循环 for int i 0
  • 新的 Clang Objective-C 文字可以重定向到自定义类吗?

    虽然超载 开始踏上危险的领域 我喜欢在 Clang 3 1 中添加新的 Objective C 文字 不幸的是 新的文字对我来说用处有限 除了代码需要与 AppKit 交互的情况外 我大多放弃使用基础类 转而使用我自己的自定义框架 出于多种
  • 在请求正文中发送数组不起作用:使用改造 2.1.0

    将 CustomDishItems 作为数组发送时给出结果 服务器在处理请求时遇到错误 它适用于 CustomDishItems 以下是我使用 PHP Web 服务在服务器上 POST 所需的数据 服务网址 http saavorapi p
  • iPad - 获取纵向和横向屏幕尺寸

    我使用以下代码来获取屏幕尺寸宽度 CGFloat width UIScreen mainScreen bounds size width 100 但其纵向和横向的宽度均为 668 0 如何根据设备的方向获得不同的宽度 我遇到了与您相同的问题
  • SVG - 调整以一定角度放置的矩形的大小

    All 我的应用程序中有一个 SVG 矩形 可以通过拖动矩形两侧的结束栏 左和右 来水平拉伸它 矩形可以是 1 调整大小 通过如上所述拉伸 2 拖动 3 并旋转 一切工作正常 但是 一个奇怪的经历是 当我将矩形旋转到接近 90 度 然后尝试
  • 将 2D Numpy 灰度值数组转换为 PIL 图像

    假设我有一个 2D Numpy 数组 其值范围在 0 到 1 之间 它表示灰度图像 然后如何将其转换为 PIL Image 对象 迄今为止的所有尝试都产生了极其奇怪的分散像素或黑色图像 for x in range image shape
  • 在 Windows Phone 7 中使用 RestSharp

    我正在尝试使用 RestSharp http restsharp org http restsharp org 在 Windows Phone 7 项目中 但我似乎遇到了 RestSharp 使用的 Newtonsoft Json NET
  • 如何从 Visual Studio 2013 中禁用 mscorlib.dll?

    我正在尝试在 Visual Studio 2013 中使用自定义标准库 但似乎无法弄清楚 尽管我希望能够在 IDE 中利用智能感知 但使用 nostdlib 在命令行上进行编译没有任何问题 我已删除除自定义 corelib 之外的所有引用
  • ElasticSearch非法参数异常

    我在 Ubuntu 16 04 上使用 Elasticsearch 最新版本 但在将数据放入其中时遇到了一些问题 这是我的 json 文档 相关部分 products 232CDFDW89ENUXRB sku 232CDFDW89ENUXR
  • 无法通过实例引用访问成员;用类型名称限定它[重复]

    这个问题在这里已经有答案了 今天我正在研究 c Sharp 正在尝试静态类 但它似乎对我不起作用 我很想知道解决方案 我已经在网上浏览了一段时间 但似乎找不到答案 这是我的代码 class Count public static int s
  • CLISP - 反转简单列表

    我必须反转简单 单维 列表的元素 我知道有一个内置的反向函数 但我不能用它来做这个 这是我的尝试 defun LISTREVERSE LISTR cond lt length LISTR 2 LISTR listr is 1 atom or