Lisp 格式和强制输出

2024-04-30

我不明白为什么这段代码在不同的实现中表现不同:

(format t "asdf")
(setq var (read))

在 CLISP 中,它的行为与预期一致,先打印提示,然后读取,但在 SBCL 中,它显示:then输出。我在网上查了一下,修改了一下:

(format t "asdf")
(force-output t)
(setq var (read))

同样,这在 CLISP 中运行良好,但在 SBCL 中则不然still读取,然后输出。我什至尝试将其分离成另一个函数:

(defun output (string)
   (format t string)
   (force-output t))
(output "asdf")
(setq var (read))

它仍然读取,然后输出。我没有使用吗force-output正确还是这只是 SBCL 的一个特性?


你需要使用FINISH-OUTPUT.

在具有缓冲输出流的系统中,某些输出保留在输出缓冲区中,直到输出缓冲区已满(然后它将自动写入目标)或输出缓冲区显式清空。

Common Lisp 为此提供了三个函数:

  • FINISH-OUTPUT,尝试确保所有输出完成然后返回。

  • FORCE-OUTPUT,启动剩余的输出,但立即返回并且不等待所有输出完成。

  • CLEAR-OUTPUT,尝试删除任何挂起的输出。

还有T in FORCE-OUTPUT and FORMAT不幸的是不一样。

  • force-output / finish-output: T is *terminal-io* and NIL is *standard-output*

  • FORMAT: T is *standard-output*

这应该有效:

(format t "asdf")
(finish-output nil)   ;  note the NIL
(setq var (read))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lisp 格式和强制输出 的相关文章

  • 使用 NSDateFormatter 从字符串中获取日期,无论 12 小时到 24 小时设置如何

    今天我的问题是关于日期格式和字符串 我的应用程序从互联网下载一些表示日期的字符串 日期格式始终是这样的 2010 05 24 at 20 45 我需要将此字符串转换为 NSDate 对象才能执行一些日期操作 我尝试了这段代码 NSStrin
  • 如何更改刻度标签字体大小

    在 matplotlib 图中 如何使用以下命令设置刻度标签的字体大小ax1 set xticklabels 更小 此外 如何将其从水平旋转为垂直 其实还有更简单的方法 我刚刚发现 import matplotlib pyplot as p
  • 使用局部特殊变量

    为了方便原型设计 我依赖于许多全局变量 这些变量在整个代码中大量使用 但现在我想让其中一些成为本地的 但动态的 在本地声明它们是否有任何重大缺点 例如 效率等 special而不是全球 特殊变量不受欢迎的功能包括 缺乏参考透明度 这使得对代
  • 试图理解 setf + aref “魔法”

    我现在已经了解了数组和aref在 Lisp 中 到目前为止 它很容易掌握 而且它的作用就像一个魅力 defparameter foo make array 5 aref foo 0 gt nil setf aref foo 0 23 are
  • 为什么 SBCL eval 函数会丢失它运行的宏?

    print x 打印出我想要评估的内容 但是 eval x 失败了 但如果我运行 x 它就可以了 我缺少什么 请告诉我为什么这不起作用 或者我是否在做一些愚蠢的事情 我正在尝试打印动态大小的表并设置 lambda 变量以最终计算表中每个单元
  • 为什么 takewhile() 会跳过第一行?

    我有一个这样的文件 1 2 3 TAB 1 2 3 TAB 我想将 TAB 之间的行作为块读取 import itertools def block generator file with open file as lines for li
  • 在 Ruby 控制台应用程序中获取键盘事件(无需按“Enter”输入)的最佳方法是什么?

    我在互联网上寻找这个答案已经有一段时间了 发现其他人也在问同样的事情 即使在这里也是如此 因此 这篇文章将介绍我的案例以及对我找到的 解决方案 的回应 我对 Ruby 很陌生 但出于学习目的 我决定创建一个 gem here https g
  • Spring + Jackson + Joda时间:如何指定序列化/反序列化格式?

    我有以下课程 public static class ARestRequestParam String name LocalDate date joda type 我希望它从以下由 Jackson 处理的 JSON 中反序列化 名称 abc
  • Java - 了解 PrintWriter 和刷新的需要

    好吧 首先我对所有代码表示歉意 但我觉得代码太多总比代码不够好 我正在制作一个简单的聊天客户端和印刷机 尤其是我正在努力解决的问题 使用现在的代码 它将与服务器类交互 并且完美地打印我想要打印的内容 但是 当我删除 writer flush
  • 在 Haskell 中调试时打印时间戳

    我仍在学习 Haskell 并调试一些函数 并且通常有一个时间戳函数来了解某些操作何时开始和停止 doSomeAction String gt IO doSomeAction arg1 do putStrLn lt lt makeTime
  • phonegap html5 android 同步文件系统 IO

    如何使用 PhoneGaps 文件系统 API 同步读写文件 有可用的同步包装器吗 无法通过提供的 api 同步访问文件 从phonegap的实现方式猜测 我怀疑您是否可以编写一个插件来同步执行此操作
  • 关于onlisp中的广义变量

    我不确定这里发生了什么 文中的宏观示例 基本上不知道如何使用get setf 方法 一个内置宏 也许是函数 具体来说 如果某些返回值是这样的情况呢 get setf 方法为零 例如 get setf 方法 x NIL NIL NEW 306
  • Common Lisp 反引号/反引号:如何使用?

    我在使用 Lisp 的反引号读取宏时遇到问题 每当我尝试编写一个似乎需要使用嵌入式反引号的宏时 例如 w x y 来自保罗 格雷厄姆的ANSI 通用 Lisp 第 399 页 我不知道如何以编译的方式编写代码 通常 我的代码会收到一整串错误
  • Matlab:如何显示数组的“真实”值?

    我有一个在脚本中计算的向量 计算后 我将值显示到命令窗口 显示如下 finalResults 1 0e 05 0 0001 0 0 0005 0 0002 0 0001 0 0027 0 0033 0 0001 0 0000 0 0000
  • Scheme 和 Common Lisp 之间的实际区别是什么? (或任何其他两种 Lisp 方言)

    注意 我并不是在问学哪个 哪个更好或者诸如此类的问题 我选择了 SICP 的免费版本 因为我觉得它读起来很好 我听说过有关它的好东西 并且我对编程的这一方面很感兴趣 我知道Scheme 是Lisp 的一种方言 我想知道 Scheme 和Co
  • defvar、defparameter、setf 和 setq 之间有什么区别

    我找到了一个类似问题 https stackoverflow com questions 3855862 setq and defvar in lisp 但我不太明白这个解释 所以我尝试使用以下示例运行 clisp 1 gt defvar
  • Common Lisp:循环列表中连续对的最佳方法是什么?

    有时我需要循环遍历列表中的连续对 我现在的做法是 loop for x on lst while not null cdr x do something on car x and cadr x 我想知道是否有更好的 内置的方法来做到这一点
  • JTextPane 的样式是否具有类似控制台的格式?

    有没有办法使 JTextPane 中的文本看起来与控制台输出的文本相似 我的意思是 基本上 每个字符如何具有相同的宽度 以便 ASCII 艺术或间距缩进之类的东西可以正常工作 例如 目前 如果我输入 First 然后输入 5 个空格 然后在
  • 一次性的 lisp 宏,我的实现正确吗?

    我正在尝试从 Peter Seibel 的书 Practical Common Lisp 中学习 Lisp 在第 8 章 宏 定义你自己的 http www gigamonkeys com book macros defining your
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap

随机推荐