作者sbrhsieh (sbr)
看板java
标题Re: [问题] SCJP6.0
时间Tue Aug 4 17:02:34 2009
※ 引述《Schelfaniel (Schelfaniel)》之铭言:
: 可是 Java 还是走 OO,所以写 Clojure 时,会有一半以上,
: 实际上是会带 OO 感觉的函式语言,这有点没办法,
: 因为物件是会变的,
: (let [java-object ...]
: (process1 java-object)
: (process2 java-object))
: 像这样在纯函式语言,应该要可以保证 执行 process2 时的 java-object,
: 和执行 process1 时的一样,但是,它既然是 java-object,
: 在 process1 里面就可以进行内容修改如 .setXXXX 之类的,
: 这种就让 Clojure 没办法那麽纯了。
请问标记为绿色这一段描述,你在哪些文件有看到这样子的定义(关於 functional
programming language)?
如果 let construct 里把一个 vector object binding 到 java-object,一样会有
process1 与 process2 在执行时所处理的 object 的状态是相异的。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.140.221
1F:→ qrtt1:建议换个标题续继 :D 08/04 17:04
3F:→ godfat: computer_science) 08/04 17:11
4F:→ sbrhsieh:谢谢提供这项资讯。但 Referential transparency 与 08/04 17:20
5F:→ sbrhsieh:Schelfaniel 讲的特性似乎不是同一回事? 08/04 17:22
6F:→ Schelfaniel:函数式语言的变数,都是不变的吧,但物件导向有可能变 08/04 20:22
7F:→ Schelfaniel:也就是说,如果process1要变,变化会放在它的传回值 08/04 20:29
8F:→ Schelfaniel:像是这样 (process2 (process1 java-object)) 取其变 08/04 20:30
9F:→ sbrhsieh:变数所在的 location 的内容(value)不变,跟物件状态不变 08/04 21:27
10F:→ sbrhsieh:是两件事。你提到的现象不是由使用 Java object 而引起。 08/04 21:29
11F:→ sbrhsieh:抱歉,我错了。我以为Clojure是Common LISP compliant。 08/04 21:54
12F:→ Schelfaniel:Common Lisp 设计上就是多维度的,没 Clojure 纯 08/04 22:18