Re: purely functional (原 [問題] SCJP6.0)

看板java作者 (godfat 真常)時間16年前 (2009/08/05 12:00), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/6 (看更多)
※ 引述《Schelfaniel (Schelfaniel)》之銘言: : ※ 引述《godfat (godfat 真常)》之銘言: : : 1. 如果一個 expression 的 return value 沒被用上,則可以從程式中 : : 完全移除,也是就是完全不呼叫。 : 這個有點難,像是 "印 debug 訊息" (這算 Statement? ) :QQ 所有的 IO 都有 side-effect, 因此順序不能任意交錯,也不能被移除。 是不是 statement 端看有沒有回傳值,在沒有 side-effect 的程式裡, 也就是 purely functional 裡,只有 expression, 沒有 statement. 或是說 statement 和 expression 其實是同一件事.. : : 2. referential transparency. 即 if x == y then f(x) == f(y) : f(x) = random 0..x 的話? random 本身也有 side-effect, 比方說 pseudo-random number generator, 至少需要一個 seed, 每一次呼叫 seed 都會被改變,因此有 side-effect. 當然也不可能符合 if x == y then f(x) == f(y) : 這很難,Java Object 內含一堆狀態, : 基本上要使用到 Java Object,不可能完全不動到, : 除非,每一次都 clone 出來再使用,但這樣效能不好, : 或許會衍生出其他的問題。 : 所以 clojure 要基於 Java 之上,基本上應該是沒可能成為 : 純的函數語言了 物件導向本身就是以 state 為基準在做的,希望讓 fp 與 oo 混和, 我看到現在是覺得 scala 做得最漂亮。不過要完全混和,應該是不可能的... 看起來 clojure 這點不是做得很好的樣子? 其實我覺得 fp 還是需要 static typing 的,lisp 這樣不是很適合... -- Hear me exalted spirits. Hear me, be you gods or devils, ye who hold dominion here: I am a wizard without a home. I am a wonderer seeking refuge. Sacrifice -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.121.85

08/05 12:08, , 1F
看不懂也推... (這真的是跟 Java 有關嗎? [淚目])
08/05 12:08, 1F
文章代碼(AID): #1AUGFnZS (java)
討論串 (同標題文章)
文章代碼(AID): #1AUGFnZS (java)