如何在mit-scheme中正确使用(读取)?

2024-05-25

我在文档和 Rosetta 代码中读到(read)用于从控制台获取输入。所以我写了这段代码来检查这一点:

(display (+ (read) 1))

但 mit-scheme 从不要求用户输入,程序就会终止。为什么会这样呢?


在 REPL 中,(display (+ (read) 1))按预期工作。

When (display (+ (read) 1))放置在源文件中,并且该文件作为脚本运行mit-scheme --quiet < program.scm (参考 https://stackoverflow.com/q/903968/5916915),mit-scheme 从不要求用户输入,程序就会终止。为什么?

要查看原因,请将其放入源文件中:

(define n (read))
2
(display (+ n 1))

You get 3,正如预期的那样。

这都是由 shell 输入重定向引起的(即<). read默认从当前输入端口获取输入。通过 shell 输入重定向,当前输入端口是源文件。因此,(read)不提示用户输入,因为 stdin 是源文件。

据我所知,目前没有简单的方法可以直接从命令行正确运行 MITScheme 脚本(惊讶!惊讶!MITScheme 已经过时了)。相关邮件列表讨论:[MIT-Scheme-devel] 如何运行脚本并退出? https://lists.gnu.org/archive/html/mit-scheme-devel/2019-09/msg00000.html.

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

如何在mit-scheme中正确使用(读取)? 的相关文章

  • 球拍累加器列表功能

    我正在研究创建您可能玩过的 2048 游戏的具体步骤 它位于许多在线网站上 基本上这个函数所做的就是 1 所有空格移到后面 2 如果前两个数字相等 则加倍并检查每两个数字 这些是我所坚持的步骤的说明 设计一个向左滑动的函数 使其运行sing
  • 在R6RS方案中,有没有办法获取当前环境以供eval使用?

    R6RS方案中有没有办法获取当前环境 然后将其作为第二个参数传递给eval 例如 下面的表达式要返回 9 问号应该是什么 let x 4 y 5 eval x y 不 R6RS中没有这样的东西 一些罕见的实现可能支持类似的东西 但绝大多数
  • schema 中的方法和属性:Scheme 中是否可以实现 OOP?

    我将用一个简单的例子来说明我的问题 在 Java C 或任何其他 OOP 语言中 我可以创建一个pie类的方式类似于 class Apple public String flavor public int pieces private in
  • 方案作业

    当我每次得到值 10 时评估以下表达式 lambda x lambda set x x 10 x 0 不过 我只是通过用名称抽象上述过程来进行修改 并在每次值增加 10 时调用 foo define foo lambda x lambda
  • 在Scheme中编写一个自动记忆器。有关宏和包装器的帮助

    我在Scheme中编写自动记忆器时遇到了一些问题 我有一个有效的 memoize 函数 它创建一个哈希表并检查该值是否已经计算出来 如果之前已经计算过 则返回值 否则调用该函数 define memoizer fun let a table
  • 将字符串附加到 IronScheme 中的现有文本文件

    我们正在尝试使用 IronScheme 构建一个日志文件 并且我们已经使用racket 为其编写了代码 它在球拍中工作正常 但 IronScheme 会抛出错误 这是我们目前所拥有的 define write to log lambda w
  • letrec、命名let和内部定义的常见用法?

    我有几本关于Scheme的书 其中一些提到了名为let和letrec的书 但没有一本真正给出了令人信服的例子 我的意思是 我何时以及为何使用其中一个而不是另一个 是否存在 letrec named let 确实是比内部定义甚至外部辅助过程更
  • 方案中的延续传递风格?

    我遇到了这段代码在维基百科上 http en wikipedia org wiki Continuation passing style define pyth x y k x x lambda x2 y y lambda y2 x2 y2
  • 为什么我的 Scheme 函数返回错误“应用程序:不是过程”?

    我想获得 a b c 的第二个值 但我不想使用 cadr 我可以得到正确的答案 car cdr a b c b 但是当我构建该函数时 define test lambda list car cdr list test a b c 我收到以下
  • 如何找到 MIT 方案中出现错误的地方?

    当你在 MIT 方案中遇到错误时 它不会告诉你错误发生在哪里 例如 它只打印如下内容 Unbound variable top left To continue call RESTART with an option number REST
  • 经验丰富的计划者的 get-first、get-next 和 waddle 函数

    define get first lambda l call with current continuation lambda here set leave here waddle l leave quote define get firs
  • 方案:为什么内部定义比外部定义快?

    我尝试运行下面的程序 define odd internal x define even x if zero x t odd internal sub1 x if zero x f even sub1 x define odd extern
  • CMake:如何在多个文件上运行自定义命令来生成源文件?

    我有以下情况 我想编译一些Scheme文件Gambit https github com gambit gambit成可执行文件 为此 我使用 gambit 将所有计划文件翻译 生成为 C 和目标文件 然后将其编译并链接为可执行文件 假设我
  • 方案功能[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我试图解释这个方案函数的作用 define y s lis cond null lis equal s car lis lis else
  • 模拟Scheme中Python的范围

    如何在Scheme中创建连续数字的列表 在Python中创建一个从1到10的整数列表是range 1 11 方案有等效的吗 mzscheme version gives Welcome to Racket v5 2 1 Edit Per h
  • 方案中的多维向量?

    我之前问过一个关于方案中数组的问题 结果它们被称为向量 但在其他方面基本上与您期望的相同 有没有一种简单的方法可以在 PLT 方案中处理多维 arrays 向量 出于我的目的 我想要一个名为make multid vector或者其他的东西
  • Emacs Lisp 可以将 lambda 形式分配给像Scheme 这样的变量吗?

    在研究 Emacs Lisp 的符号单元时 我发现像这样的示例函数 defun a rest x x 我可以打电话 symbol function a 返回 lambda rest x x 如果我愿意的话我可以使用它 gt lambda r
  • 为什么《小阴谋家》中的所有 lambda 表达式都是如此?

    在从 SICP 学习了一些计划之后 我开始阅读 小计划 我觉得这本书很有趣 并且已经完成了大约四分之一 我注意到我可以在不使用 lambda 的情况下编写许多 大多数 全部 解决方案 而 The Little Scheduleralways
  • 可扩展的宏定义

    灵感来自于评论区 https stackoverflow com questions 23879410 is it possible to extend a function lambda macro in scheme 23879575
  • 返回列表的前 n 个

    如何返回第一个n列表的元素 这是我所拥有的 define returns lambda list n cond null list 0 n n 1 car list cons car list returns cdr list n else

随机推荐

  • matplotlib 的 pcolor 中的白线

    在某些 pdf 查看器 例如 OSX 上的 Preview 中 使用以下命令绘制的图matplotlib的 pcolor 有白线 见下图 我怎样才能摆脱它们 源代码非常简单 选择任何数据x y z import matplotlib mat
  • 确定 openpyxl 中的工作表是否为空

    我有一个应用程序 如果已经有数据 则将工作表写入最后一列 2 如果工作表为空 则写入最后一列 1 我得到了我认为是空的工作表 如下所示 from openpyxl workbook workbook import Workbook book
  • 如何启动低优先级进程? C#

    我想执行命令行工具来处理数据 它不需要阻塞 我希望它的优先级较低 所以我写了下面的内容 Process app new Process app StartInfo FileName bin convert exe app StartInfo
  • C++警告:局部变量的地址

    Merged https meta stackexchange com questions 158066 what is a merged question with 局部变量的内存可以在其作用域之外访问吗 questions 644121
  • XCode iPhone 项目中目标所有配置的通用预处理器宏

    我的应用程序的每个目标通常有四种配置 调试 发布 分发 临时 有没有办法为所有 4 个添加一个通用宏 同时不破坏我到目前为止设置的宏 您在编辑器中看到 多个值 提前致谢 奥比旺 在前缀头文件中定义宏 将包含在所有源文件中
  • 什么是@”运算符?

    我在互联网上搜索了这意味着什么 包括 and 单独 正是在这个code https gist github com jakeballard 11240204 Win32ShowWindowAsync Add Type memberDefin
  • 在 Ruby 中的文件中查找并替换

    我有一个用 ruby 编写的小程序 我在这里找到了一段很好的代码 用于查找和替换文件中的某些内容 但它似乎不起作用 这是代码 usr bin env ruby DOC test txt FIND M SEP n make substitut
  • 设备类在 .net MAUI 中被标记为已过时

    最近我更新到了最新版本的 net MAUI 我有点惊讶地发现 MAUI 设备类现在已被标记为 过时 我有多个用例 其中我将设备类用于某些用途 例如 现在主线程方法已过时 Device BeginInvokeOnMainThread gt 现
  • 找不到具有不同构建变量的包名称“....”的匹配客户端

    我想实现推送通知 我添加到项目级别 dependencies classpath com android tools build gradle 2 2 2 classpath com google gms google services 3
  • 在 C/C++ 中捕获 DLL 崩溃

    我正在从 DLL 调用函数 如下所示 declspec dllimport bool dll function int main if dll function 在某些情况下 我传递给DLL函数的数据会导致DLL崩溃 是否可以捕获此问题 以
  • 为什么这个对象的“forEach 不是函数”?

    这可能真的很愚蠢 但我不明白为什么这不起作用 var a cat large a forEach function value key map console log value 未捕获的类型错误 a forEach 不是函数 http j
  • 当我添加点击手势时,捏合和平移在 Xamarin 表单中不起作用

    我想创建一个功能来点击并在另一个背景图像上添加图钉图像 并且背景图像应该能够缩放和平移 这是为此的 XAML 代码 这里捏缩放不起作用 但点击事件工作正常
  • 配置 OPC UA 服务器 (Milo)?

    我刚刚查看了 Eclipse Milo 项目 https projects eclipse org proposals milo https projects eclipse org proposals milo 这对于 开放 OPC UA
  • 传递选择器函数时,OrderBy 不会转换为 SQL

    当我执行时 var t db Table1 OrderBy x gt x Name ToList 在 SQL 分析器中 这是翻译后的 SQL SELECT Extent1 ID AS ID Extent1 Name AS Name FROM
  • Android 当应用程序启动时显示白屏几秒钟?

    我没有调用任何 URL 请求 该应用程序显示了一个简单的启动屏幕 我也禁用了即时运行 但该警告仍然出现 06 26 09 26 05 022 8709 8709 saurav com navigation drawer I art 后期启用
  • ASP.NET MVC HandleError 视图未找到

    我正在尝试使用 HandleError 属性在 ASP NET MVC3 中实现异常处理 我正在使用的代码如下所示 HandleError Order 1 ExceptionType typeof SocketsOfflineExcepti
  • 如何在 thymeleaf 中执行 th:if 语句?

    如何使用 th if 语句来匹配 2 个表达式
  • 三个嵌套for循环的渐近分析

    我想计算这个嵌套 for 循环的 theta 复杂度 for int i 0 i lt n i for int j 0 j lt i j for int k 0 k lt j k statement 我会说它是 n 3 但我认为这是不正确的
  • 我怎么知道我的工作副本是否不同步

    我们将当前版本代码的映像保存在某个本地目录中 并且为了构建代码 我们使用该目录中的代码 在构建脚本中 我需要一种方法来确定图像目录中的代码是否与存储库中的当前发布分支同步 如果是这样 我将从脚本内进行 svn 更新 修订号可以以某种方式用于
  • 如何在mit-scheme中正确使用(读取)?

    我在文档和 Rosetta 代码中读到 read 用于从控制台获取输入 所以我写了这段代码来检查这一点 display read 1 但 mit scheme 从不要求用户输入 程序就会终止 为什么会这样呢 在 REPL 中 display