这几天的sicp第三章快结束了,可是stream这边,我始终无法在drscheme中使用,因此在google大神的帮助下,找到了解决方法;
原文在这里:
http://schemewiki.org/view/Cookbook/MiscSICP
要在drscheme中使用stream,必须在代码中加入下面这部分:
(require (lib "defmacro.ss"))
; cons-stream : obj stream -> stream
; construct a stream whose first element is obj and whose tail is stream
; [cons-stream is a special form]
(define-macro cons-stream
(lambda (car cdr)
`(cons ,car (delay ,cdr))))
为什么要用define-macro不是很懂,我直接用define的话下面使用cons-stream构造无限流时就会报错,忘达人解释一下.
PS:知道原因了,哈哈 原来是:
引用
定义宏可以自定义新的语法结构, 主要是可以防止求值
也就是 惰性求值..
分享到:
相关推荐
在深入探讨如何安装并使用DrScheme的make功能之前,我们先简要了解一下DrScheme及其make工具的基本概念。DrScheme是Racket编程语言(原PLT Scheme)的一个集成开发环境(IDE),它提供了一个交互式的编程环境,非常...
标题“如何设计世界:在DrScheme中的创造性编程”明确指出本书的主题是关于使用DrScheme这一环境来进行世界模拟程序的设计与开发。这里的“世界”指的是由一系列规则定义的、能够随时间变化的状态系统。DrScheme是一...
Lisp 方言 Scheme 的一个解释器,可以按照在 Windows 系统上,使用非常方便,也很只智能。
SICP 使用的scheme解释器 以前叫DrScheme
综上所述,《如何设计程序》不仅提供了实用的编程技巧,更重要的是教会读者一种系统性的思维方式,使他们能够在面对复杂问题时能够独立思考并寻找解决方案。无论是对于想要入门编程的学生还是希望提升自身逻辑思维...
在本书中,作者选择了Lisp语言和DrScheme环境作为教学工具,因为它们被广泛认为是编程教育中非常有力量的工具。通过本书,读者将了解如何处理数据、设计程序、编写函数,以及如何处理复杂的编程问题。 书中的内容被...
4. **尾递归(Tail Recursion)**:Scheme支持尾递归优化,这使得递归函数在内存使用上更为高效,不会因为递归深度增加而导致栈溢出。 5. **函数可以作为值返回**:Scheme中的函数是第一类公民,这意味着函数可以被...
- **第2章**:探讨数字和算术操作的基础知识,变量的概念及其在程序中的应用,以及如何解决简单的文字问题。 - **第3章**:讨论函数和变量定义的作用,并通过一系列练习加深理解。 - **第4章**:介绍布尔值、关系...
总的来说,《如何设计程序》是一本适合初学者的编程入门书籍,通过使用Scheme语言,它不仅教授编程技术,更注重培养读者的逻辑思维和问题解决能力,是计算机科学教育领域的一次重要尝试。对于想要提升自身计算思维和...
- **简洁性**:Scheme语言以其简洁著称,允许程序员将更多的精力集中在解决实际问题上,而不是语言本身。 - **灵活性**:Scheme不仅可以用作脚本语言,还可以作为应用程序的扩展语言。 - **元语言特性**:Scheme...
4. **尾递归(Tail Recursion)**:优化递归调用,确保在内存使用上更有效率。 5. **函数作为值返回**:函数可以像其他值一样被赋值、传递和存储,增强了函数式编程的能力。 6. **一流的计算连续传值调用(Passing...
标准Scheme不支持多行注释,但在某些实现中提供了多行注释的支持,如Guile中使用`#!`和`!#`作为开始和结束标记。 通过以上介绍可以看出,Scheme语言虽然在商业应用方面并不突出,但在学术研究、教学以及编程语言...
4. **尾递归(Tail Recursion):** Scheme优化了尾递归调用,这意味着可以高效地使用递归来编写程序,而不用担心栈溢出的问题。 5. **函数可以作为值返回:** 在Scheme中,函数可以像其他数据类型一样传递和返回,这...
此外,schemeNLP的使用能显著提高语料库分析的效率和深度,从而在NLP领域提供了有价值的视角和方法论。尽管schemeNLP可能源自较早的研究时期,它所依赖的基础原理和方法依然在现代NLP的研究与开发中占有重要地位,...
类似于C的编程语言,在scheme *中隐含了一些类似Java的元素。 纯粹是为了学习,尽管您可以使用它编写一些程序。 写在DrScheme。