Re: purely functional (原 [問題] SCJP6.0)
※ 引述《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
08/05 12:08, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 6 篇):