Common Lisp 格式中可重复的差一问题

2024-01-22

I have format's tabs ~VT根据是否换行而表现不同~%位于行首或行尾,我想知道为什么。不同之处在于,当换行符位于行尾时,行中似乎有一个额外的空格仅一审制表位的。下面举例说明。示例中唯一的区别在于格式控制字符串:它是"~%~A~VT= ~A"在第一个例子中和"~A~VT= ~A~%"在第二。

示例 1:输出行开头的换行符

(let ((sb (make-array 0
                :element-type 'character
                :adjustable t
                :fill-pointer 0)))
           (mapcar (lambda (line)
                     (format sb "~%~A~VT= ~A" line 10 42))
                   '(a abcd asdf foobar g november))
           sb)
"
A        = 42
ABCD     = 42
ASDF     = 42
FOOBAR   = 42
G        = 42
NOVEMBER = 42"

这里的行为符合预期。

示例 2:输出行末尾的换行符

在这个例子中需要注意的是第一行,

A         = 42

其中比示例 1 中的相应行多一个空格:

A        = 42

由于前面有双引号,所以有点难以看到,这就是我将其删除的原因:以帮助您更好地看到它们。 这在更大的示例上是可重复的,并且是从更大的程序中剥离出来的 MVE。

(let ((sb (make-array 0
                :element-type 'character
                :adjustable t
                :fill-pointer 0)))
           (mapcar (lambda (line)
                     (format sb "~A~VT= ~A~%" line 10 42))
                   '(a abcd asdf foobar g november))
           sb)
"A         = 42
ABCD     = 42
ASDF     = 42
FOOBAR   = 42
G        = 42
NOVEMBER = 42
"

最重要的问题是“为什么?”我在 Mac 上使用 SBCL 1.3.1,尚未在其他实现上尝试过。这可能是一个错误,但似乎更合理的是它的预期行为,但我不明白它的目的是什么,而且我无法在格式的文档中找到解释。


我认为这是一个错误。我还可以使用 SBCL 1.3.1 在 Linux 上重现它。

~T在某些情况下可能需要启发式(可能会失败)来确定当前列,但我猜字符串的开头应该被视为第 0 列。

至少在我的电脑上,当一个简单的操作时似乎不会发生with-output-to-string用来:

(with-output-to-string (s)
  (mapcar (lambda (line)
            (format s "~A~VT= ~A~%" line 10 42))
          '(a abcd asdf foobar g november)))

但是,当您将预制字符串提供给with-output-to-string:

(let ((sb (make-array 0
                      :element-type 'character
                      :adjustable t
                      :fill-pointer 0)))
  (with-output-to-string (s sb)
    (mapcar (lambda (line)
              (format s "~A~VT= ~A~%" line 10 42))
            '(a abcd asdf foobar g november))
    sb))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Common Lisp 格式中可重复的差一问题 的相关文章

  • 为什么在 Common Lisp 中,当我运行参数为 1 的函数“acos”时,答案是错误的?

    当我运行 acos 1 来查找 1 emacs 的反余弦时 我得到了答案 而不是正确答案 0 6 125742f 17 为什么会这样以及如何得到 0 的正确答案 就像 Windows 计算器所说的那样 我在 Windows 8 上使用 SB
  • 如何在 Common Lisp 中编写宏定义宏

    我的代码库中有大约两个宏 和攀爬 如下所示 defmacro def stat method method name stat progn defmethod method name monster monster getf stats m
  • Common Lisp 类层次结构

    格雷格 菲尔的类层次结构 http sellout github io media CL type hierarchy png该图提供了 Common Lisp 类型系统的全面描述 但我试图更好地理解层次结构顶部的类关系 举一个简单的例子
  • Lisp 多次格式化一个字符

    我正在寻找一种输出字符的方法 多次使用格式 这可能吗 有人可以填写吗 在里面 的 这样这个例子就可以工作了吗 let n 3 format nil 应该返回 gt 很高兴看到这么多解决方案 到目前为止 A 迭代结构提供了一个简洁的解决方案
  • 如何使用army bear common lisp 创建jar?

    我想知道是否可以使用army bear common lisp 创建一个jar 文件 如果可以的话该怎么做 换句话说 我有以下代码 格式为 Hello World 我可以在armed bear common lisp中运行它 我想知道如何创
  • 以列表作为参数的 defun

    我正在尝试选择 Lisp 作为我的新语言 但我在解决如何让函数的一部分作用于传递给它的列表的每个元素上时遇到了一些问题 为了学习如何解决这个问题 我试图编写一个相当基本的除法形式 当列表的一个元素为 0 时不会发出声音 而是只返回 0 de
  • 调用另一个 lisp 文件中的函数

    我必须用 Lisp 写一个游戏 为了清楚起见 我想将代码拆分到不同的 lisp 文件中 如何从另一个文件中的函数中调用函数 例如 file1 lisp 有一个名为 function1 的函数 file2 lisp 有一个名为 functio
  • Common Lisp:如何使用条件拼接在宏中构建列表?

    我们假设 defmacro testing optional var list this is when consp var a list 当被调用时 gt testing 2 THIS IS gt testing list 1 2 THI
  • 为什么 Common Lisp 中冒号位于变量之前

    Common Lisp 中变量前面的冒号语法是什么意思 我见过这样的程序 我将在这里从大量函数中展示一些示例代码 defun expand successorf node mapcar lambda action state cost le
  • SBCL:将 Hunchentoot 应用程序部署为可执行文件

    我开始使用 SBCL Common Lisp 并希望使用 Hunchentoot 开发一个小型 Web 应用程序 为了便于部署 我计划使用 sb ext save lisp and die 将所有内容保存在二进制文件中 因为我可以忍受大输出
  • common lisp:宏如何使用以编程方式生成的名称定义其他方法/宏?

    我意识到我的代码的某个部分由看起来相似的方法组组成 就像我有多个三重奏 一个由程序员的其他两个函数调用的辅助函数 我正在尝试编写一个宏来为我定义这三个函数 以便我所需要做的就是调用该宏 但我的尝试导致 defun 和函数调用将引用字符串而不
  • 如何从字符串创建关键字符号? [复制]

    这个问题在这里已经有答案了 从字符串创建符号非常简单 intern test gt test 我正在努力创造keywordplist 的符号 寻找类似的东西 XXXX test gt test 注意 intern test 不产生keywo
  • 如何在 SLIME 的 REPL 中获得 Common Lisp 的语法高亮显示?

    我想学习 Common Lisp 并通过 emacs 包管理器安装了 emacs 24 3 和 slime 在 slime REPL 语法高亮中不起作用 另一方面 当我启动 Lisp Mode 在 slime REPL 中 时 表达式的值不
  • 在 OSX 上编译 clisp-2.49:未找到 LIBFFI

    TL DR Even if libffi似乎已安装 configure即使我给它添加 正确的 前缀 脚本也找不到它 这篇文章的最后一部分 是我陷入困境的地方 我仅提供其他信息来解释我如何到达那里 我对这篇长篇文章表示歉意 如果有些内容与您无
  • Common Lisp 重新启动到条件绑定

    我在空闲时间学习 Common Lisp 并对条件系统有疑问 当我们在 common lisp 中处理错误时 我们在处理程序中指定错误类型来确定要处理哪个错误 在引发和处理错误之间 我可以进行一些重新启动 例如使用 restart case
  • Lisp 内部引用工作

    口齿不清是如何做到的quote内部工作 例如 quote 1 1 2 似乎相当于 list 1 list 1 2 这意味着它是如何递归地象征 Head 值的 这个功能是内置的吗 Run equal quote 1 1 2 list 1 li
  • windows下无法用emacs + sbcl启动slime

    我想配置我的 emacs 以使用 SLIME 和 SBCL emacs 文件如下所示 add to list load path D app slime setq inferior lisp program sbcl require sli
  • Lisp 格式和强制输出

    我不明白为什么这段代码在不同的实现中表现不同 format t asdf setq var read 在 CLISP 中 它的行为与预期一致 先打印提示 然后读取 但在 SBCL 中 它显示 then输出 我在网上查了一下 修改了一下 fo
  • gensym 在 Lisp 中做什么?

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

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

随机推荐

  • 设计帮助 – 多态事件处理

    设计问题 多态事件处理 我目前正在尝试减少当前项目中事件句柄的数量 我们有多个通过 USB 发送数据的系统 我目前有一个例程来读取消息并解析初始标头详细信息以确定消息来自哪个系统 标头有点不同 因此我创建的 EventArgs 不一样 然后
  • 通过 Oauth 以编程方式从 Gmail 注销

    我有一个网站 我使用 Oauth 将用户登录到 Gmail 然后检索他们的联系人和其他信息 我需要做什么才能确保当用户注销我的网站时 他也会自动从 Gmail 注销 据我所知 OAuth 中没有注销功能 您只需停止在应用程序和 Gmail
  • 如何使用 AngularJS 更新/编辑数据库中的数据

    在开发网络应用程序时 我刚刚添加了以下更新代码 但它不起作用 以下所有代码的摘要是 单击名为的按钮update 它会显示表格 其中应包含单击 当前产品的值 现在 当我以这种形式点击 保存 时 它应该更新数据库 但事实并非如此 我在用 GET
  • Files.createDirectory() :FileAlreadyExistsException

    我在使用 Java 7 时遇到了一个看似奇怪的问题Files班级 我想在开始编写之前确保我的目录和文件存在 以避免FileNotFoundException 并根据Javadocs http docs oracle com javase 7
  • 带线程的 Python 超时上下文管理器

    I have timeout上下文管理器与信号完美配合 但在多线程模式下会引发错误 因为信号仅在主线程中工作 def timeout handler signum frame raise TimeoutException contextma
  • Django Rest框架-调用另一个基于类的视图

    我仔细研究了几个类似的帖子 并且从同一项目中的另一个应用程序调用应用程序的基于类的视图 https stackoverflow com questions 46606247 calling a class based view of an
  • shell脚本-检查mongodb服务器是否正在运行

    我有一个 shell 脚本来执行一些 mongo db 操作 e g mongo testdb eval db dropDatabase 但是 如果 mongodb 服务器没有运行 我会得到 MongoDB shell version 2
  • 访问 WPF DataGrid“空”或“行列”标头

    我试图访问 Net3 5 WPF DataGrid 中行标题和列标题交叉处的标题 乔什 史密斯 Josh Smith 在有关不同网格控件的文章中将其称为 空标题 我将其称为 RowColumn 标题 因为它位于列标题和行标题的第一个位置 并
  • 使用 Beta API 创建新会议时出现“onlinemeeting 不能为空”错误

    我正在尝试创建一个新会议文档 https developer microsoft com en us graph docs api reference beta api application post onlinemeetings POS
  • location.href 不起作用

    我早些时候使用过 location href 但现在它没有重定向到页面 这是我的代码 function AuthenticateUserWithPage var UId amwayId val username var UPw amwayP
  • Eclipse - Galileo IDE 在构建之前强制保存更改的文件?

    当我使用以前版本的 Eclipse 例如 Ganymede Europa 时 如果我编辑了一个文件然后尝试构建 Eclipse 会提示我先保存 由于我更新到 Galileo 构建 ID 20090920 1017 并刚刚检查更新 当我构建时
  • 如何使用 font-awesome 在 angular5 视图中显示评论星星

    我在数据库中有评论星级值 例子2 5对于一个项目 我想使用 font awesome 在模板中显示它 ul class rating inline ul li i class fa fa star amber text i li li i
  • 为什么GPU做矩阵乘法比CPU更快?

    我已经使用 GPU 一段时间了 没有质疑它 但现在我很好奇 为什么GPU做矩阵乘法比CPU快很多 是因为并行处理吗 但我没有写任何并行处理代码 它自己会自动完成吗 任何直觉 高级解释将不胜感激 如何并行计算 GPU 能够进行大量并行计算 比
  • 未找到 DNN 库。 (谷歌合作实验室)

    我正在开发一个 ML 项目 使用 Google Colab 和 Tensorflow 来训练 CNN 从 EfficientNetV2M 模型开始 它曾经工作得很好 直到两天前开始训练时 train model fit X y epochs
  • 在 MATLAB R2018a 及更高版本中将复数转换为实数,无需数据复制

    Since MATLAB R2018a https www mathworks com help releases R2018a matlab matlab external do i need to upgrade my mex file
  • 通过 Python 使用 BeautifulSoup 库

    我正在学习有关使用 Python 和 Beautiful Soup 库创建地图的教程 我已经下载了 beautiful soup 该文件夹名为 beautifulsoup4 4 1 3 该文件夹的内容在附图中 在教程中 我使用以下代码来导入
  • ASP.NET MVC html 帮助程序可以渲染没有 ID 属性的元素吗?

    假设我想在 ASP NET MVC 2 中生成与此类似的元素 是否有重载或方法可以让 ASP NET MVC 2 仅生成名称属性而不生成 ID 属性 我可以让它生成一个空白 ID 但我想生成根本没有 ID 的元素 并且不重写 asp net
  • 如果不满足两个条件,则拒绝或循环用户输入

    我是一个真正的 Python 初学者 尽管到目前为止我很喜欢它的每一分钟 我正在制作一个小程序 它接受用户输入 然后用它来做一些事情 我的问题是用户输入的数字必须 1 所有加起来不超过 1 即 a1 a2 a3 leq 1 2 每个单独 这
  • 回滚进化

    这个问题可能看起来很愚蠢 但我找不到任何关于如何在 Play 2 0 中回滚进化的说明 谷歌只找到说进化文件的 Downs 部分用于此目的的页面 仅此而已 任何指示或指示将不胜感激 The Downs部分主要用于在脚本更改时恢复 Evolu
  • Common Lisp 格式中可重复的差一问题

    I have format s tabs VT根据是否换行而表现不同 位于行首或行尾 我想知道为什么 不同之处在于 当换行符位于行尾时 行中似乎有一个额外的空格仅一审制表位的 下面举例说明 示例中唯一的区别在于格式控制字符串 它是 A VT