【发布时间】:2011-10-06 21:56:23
【问题描述】:
我正在观看斯坦福大学的视频课程/讲座。课程是《计算机程序的结构与解释》
在第一堂 OOP 讲座中,讲师 (Brian Harvey) 将 OOP 方法描述为对同一问题给出不同答案的方法,而函数式编程中的函数为特定输入提供特定输出。
以下代码是 OOP 中方法的示例,每次调用时都会给出不同的答案:-
(define-class (counter)
instance-vars (count 0))
(method (next)
(set! count (+ count 1))
count) )
现在虽然课程是用scheme来说明的,但是我没有太注意语言本身,所以我无法解释代码;但是一个类似的函数“next”不能和这个“next”函数做同样的事情吗? 在 C 中,我会声明一个全局变量,每次调用 next 时将其加一。我知道 C 是程序化的,但我猜想在 Scheme 中也可以做类似的事情。
【问题讨论】:
-
@Matt 虽然斯坦福在某个时候正在/正在使用 SICP (mitpress.mit.edu/sicp/adopt-list.html),但我认为 OP 指的是 B Harvey 的伯克利讲座:youtube.com/watch?v=zmYqShvVDh4
-
老SICP?那是麻省理工学院,不是斯坦福大学。
-
set!可以说是非功能性的,因为它是一个可变赋值;-) 但是,没有理由 new "OO[P]" 对象不能' t 被创建。因此......它有点正交,除了模型如何舒适地工作。使用 C,您可以使用 structures 获得“OO[P]”。虽然没有内置的多态性或其他“OO[P]”特性,但也不需要全局变量。 -
你能澄清你的问题吗?我很难理解它。此外,如果您想享受并理解这些讲座,您必须了解方案的工作原理并在其中编写几个简单的程序(例如:尝试重现讲座中看到的书面程序)。
-
无论如何,你的问题是什么? “类似的函数'next'不能做与这个'next'函数相同的事情吗?”
标签: oop functional-programming scheme