在研究用stream产生二元组,或是三元组时(满足一定约束,i<j等等)我们利用流的特性只产生前部分的数据,至于什么数据会排在前头,则有我们的规则,总的来说,有一定的约束性,比如产生序列的顺序问题,后来探讨的权重函数也是我们会遇到的问题。(plt Scheme上对流的支持不好,才有mit Scheme的编译器实现)
;产生三元组的方法可以参照下图:
S0T0U0
|
S0T0U1 S0T0U2
S0T0U3 …
|
|
S0T1U1 S0T1U2
S0T1U3 …
S0T2U2 S0T2U3
…
…
|
利用前面的介绍的二元组产生原理(将第一个元素s 看做已知固定数),过程定义如下:
(define (triples s t u)
(cons-stream (list (stream-car s) (stream-car t) (stream-car u))
(interleave (stream-map (lambda (x)
(list (stream-car s) (car x) (cadr x)))
(pairs t u))
(triples (stream-cdr s) (stream-cdr t) (stream-cdr u)))))
(display-stream (triples intergers intergers intergers) 20)
;结果为:
(1 1 1)
(1 1 1)
(2 2 2)
(1 1 1)
(2 2 2)
(1 2 2)
(3 3 3)
(1 1 2)
(2 2 2)
(3 3 3)
(1 1 3)
(2 3 3)
(1 3 3)
(4 4 4)
(1 1 4)
(2 2 3)
(1 2 3)
(3 3 3)
(1 1 5)
(2 3 3)
;value:done
从上述结果集中很容易发现三元组产生的顺序很不对称,达不到我们的预期,或者他的杂乱让我们觉得我们还有很多工作要做,是的,现在我们看看他的关于顺序产生的关键技术.
(define (interleave s1 s2)
(if (null? s1)
s2
(cons-stream (stream-car s1)
(interleave s2 (stream-cdr s1))))
很容易发现,该过程使得上图中右上方和右下方部分交替的生成元组,如此我们也发现了这种失衡的结果。当然,流的特性让原有的顺序产生些许变化,或需我们可以从结果上进行优化,也就是后来又谈到的权重函数。
分享到:
相关推荐
gnu/mit scheme 9.0.1 basic source you'll need it while study SICP
### 关于MIT/GNU Scheme参考手册的关键知识点 #### 标题与描述理解 - **标题**:“mit-scheme-fererence”(应当是“MIT Scheme Reference”的误拼)指向了MIT Scheme的一个版本的手册,这是一份详尽的技术文档,...
LISP 的Windows 环境!这是学习LISP的很好资源!希望对大家有用!
《MIT-Scheme源代码解析与应用》 MIT-Scheme是一个基于Lisp方言的解释器,由麻省理工学院(MIT)开发,广泛用于教学、研究和软件开发。它以其高效、简洁和高度可扩展性而著称。源代码的提供为开发者提供了深入理解...
sicp中使用的ide. 用法基本和emacs一样
如名所述,官网http://gnu.april.org/software/mit-scheme/,学习SICP要用到
《MIT-Scheme的基本使用教程》 MIT-Scheme是一款基于R5RS标准的Scheme实现,它以其简洁、高效和可扩展性著称。本教程将详细讲解如何使用MIT-Scheme进行编程,包括在命令行环境和Emacs编辑器下的操作。 一、MIT-...
### 关于MIT/GNU Scheme参考手册的知识点 #### 标题与描述理解 根据所提供的信息,这份文档被称为“mit-scheme-ref”,它是一系列MIT书籍的一部分。文档标题中提到的“MIT/GNU Scheme Reference Manual”指出这是...
《MIT/GNUScheme User’s Manual》是针对MIT/GNUScheme版本9.0的官方文档,由Stephen Adams、Chris Hanson及MIT Scheme团队共同编写完成。这份手册详细介绍了MIT/GNUScheme的使用方法,包括但不限于安装、启动、编程...
cd mit-scheme-tm-seed 安装依赖项并使用make运行测试: make 您最终应该会看到 1 次测试运行和 0 次失败。 如果make对你不起作用,请打开一个问题。 你也可以运行 make repl 使用加载的代码打开 MIT Scheme ...
我保证Conjure的UX将使与MIT Scheme的合作变得更加愉快。 如果那不能使您信服,请继续阅读,该插件仍然有效(我认为),但我认为您会喜欢Conjure的。 无论如何,祝您有美好的一天! @Olical 介绍 警告:当前依赖...
例如,一个自定义的scheme可能是"myapp://",这样当用户点击含有"myapp://"开头的链接时,系统会尝试找到能够处理这种链接的应用并启动它。 ### scheme的实现原理 1. **注册scheme**:在iOS的Info.plist文件中,...
MIT-Scheme和Mechanics的Dockerfiles。_Dockerfile_Shell_下载.zip
Structure and Interpretation of Computer Programs (SICP)是mit cs,ee必修课程,多次在大牛的文章中指出,对于志在从事程序员这份职业的工程师来说,是不可多得的好书。本资源是课程配套的解释器和使用向导。
这是一个高级的控制流构造,用于处理程序的跳转。 **13.2 Escaping 继续** 通过`call-with-current-continuation`可以实现程序的非本地跳转。 **13.3 Treemat** 这部分内容未在提供的文本片段中明确提及,但可能...
在实际操作中,可以使用Guile、MIT/GNU Scheme、Racket等流行的Scheme实现来编写和运行程序。每个实现都有其特点和用途,选择适合自己的环境能提高学习效率。 总的来说,"Scheme程序入门必看"是一份宝贵的资源,它...
- **其他实现**:除了Guile之外,还有许多其他的Scheme实现,例如GNU/MIT-Scheme、SCI、Scheme48、DrScheme等。这些实现大多为开源项目,提供不同的特性和优势,有的甚至可以将Scheme代码编译成C语言或者虚拟机代码...
- **文献资源**:虽然官方文档有限,但通过查阅相关文献和社区资源,可以获得更多关于Fluent Scheme的深入理解。 总之,Fluent与Scheme的结合为流体动力学和热传递等领域的研究人员和工程师提供了一个强大的工具集...