作者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