首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你必须使用display来输出使用r6rs的东西吗?

你必须使用display来输出使用r6rs的东西吗?
EN

Stack Overflow用户
提问于 2010-06-03 09:21:04
回答 1查看 296关注 0票数 0

背景知识:我是个新手,正在使用DrScheme编写我的程序。

当我以r5rs身份运行程序时,以下程序输出12345:

代码语言:javascript
复制
12345

但是,下面的程序不输出任何内容(它是一个r6rs程序):

代码语言:javascript
复制
#!r6rs
(import (rnrs))

12345

也就是说,我可以通过执行以下操作使其输出12345:

代码语言:javascript
复制
#!r6rs
(import (rnrs))

(display 1235)

这是r6rs的新特性吗?只有在使用display指定输出时,才会出现输出。或者我只是做错了什么

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-03 09:43:54

这是你在这里看到的一个微妙的问题。在PLT中,首选的操作模式是在模块中编写代码,其中每个模块都有它所编写的语言的规范。通常,默认语言是#lang scheme ( #!#lang的缩写)。在这种语言中,行为是让所有顶层的非定义表达式显示它们的值(除非它们是空的--这是大多数副作用的结果)。但是#lang r5rs#lang r6rs不会做同样的事情--所以这些顶层表达式会被计算,但从来不会显示。

您看到R5RS语言的一些输出的原因是您没有将其用作“模块”(就像在#lang r5rs中一样),而是使用了特定的R5RS“语言级别”。这种语言级别与R5RS更兼容,但由于各种微妙的原因,这通常不是一个好主意。因此,使用#lang通常更好,如果您想省去一些额外的冗余麻烦,如果您现在坚持使用#lang scheme,以后再考虑标准会更容易一些。(当然,还有YMMV。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2962778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档