看板 java 關於我們 聯絡資訊
※ 引述《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
qrtt1:建議換個標題續繼 :D 08/04 17:04
godfat: computer_science) 08/04 17:11
sbrhsieh:謝謝提供這項資訊。但 Referential transparency 與 08/04 17:20
sbrhsieh:Schelfaniel 講的特性似乎不是同一回事? 08/04 17:22
Schelfaniel:函數式語言的變數,都是不變的吧,但物件導向有可能變 08/04 20:22
Schelfaniel:也就是說,如果process1要變,變化會放在它的傳回值 08/04 20:29
Schelfaniel:像是這樣 (process2 (process1 java-object)) 取其變 08/04 20:30
sbrhsieh:變數所在的 location 的內容(value)不變,跟物件狀態不變 08/04 21:27
sbrhsieh:是兩件事。你提到的現象不是由使用 Java object 而引起。 08/04 21:29
sbrhsieh:抱歉,我錯了。我以為Clojure是Common LISP compliant。 08/04 21:54
Schelfaniel:Common Lisp 設計上就是多維度的,沒 Clojure 純 08/04 22:18