PLT 板


LINE

看板 PLT  RSS
※ 引述《godfat (godfat 真常)》之銘言: : 推 ephesians:lazy是用來節省計算成本,結果仍浪費成本啊! XD 03/02 06:45 : 能越早做 eval 或 binding 執行效率當然會越高,我覺得大部份的情況下 : 還是需要 eager eval, 只有很少數是真的需要用 lazy eval. 當然,這是 : 指使用 imperative 之形式的話,funational 又是另一回事了 @@ 我記得有研究分析過真正使用 non-strictness(*) 的時機到底有 多少,結論是不多,所以不值得(像 Haskell 這樣)把它當作 default. 不過我可能記錯。 (*) 嚴格說起來,lazy evaluation 只是一種實作 non-strict 語意的方法之一(還有其他的方法)。不過 lazy evaluation 這個詞念起來比較 印象深刻,所以實際上常常混用。 我之前不知道 D 這個語言。看前一篇的描述,似乎就頗像是把 eager 當作 default, 需要 lazy 的時候再特別宣告一下。 對我來說,我是已經很習慣 laziness 了,並不知道自己真的是否 有用到,只覺得如果沒有會怪怪的。 * * * 關於 log 的例子指出了重要的一點: non-strictness 提供了另一種 模組化的可能。像 log 如果不是 non-strict 的,就沒法獨立出來變 成一個可重用的函數。 「Lazy evaluation 省計算」這件事情其實是個誤解/誤導。舉個例子, 如果要算 n 階層,我們可以先產生 [1,2,3...,n] 的串列,然後把它 乘起來;要產生 [1,2,3..n] 這個串列,可以先產生一個從 1 開始 的無限長串列(寫成 [1..] )然後取前面 n 個。所以可以這麼做: foldr (*) 1 (take n [1..]) 其中 take n 取串列的前面 n 個元素, foldr (*) 1 把他們 乘起來。可是先產生一個長串列、再截一段出來、再乘起來,不是很 費工又耗記憶體嗎?我們說,沒關係,在 lazy evaluation 之下, 只有使用到的地方才會去計算,所以其實這個程式用的是 constant space, 而且也沒有真的去產生無限長的串列。 所以 lazy evaluation 省時間/空間?其實沒有這回事,因為所謂 省是要看和誰比。如果今天是用一個 eager 的語言,程式根本就 不會這樣寫。Lazy evaluation 「省」出來的結果,其實和一個 eager 程式本來會寫成的樣子是一樣的。而且 laziness 還會有些 overhead. 那 laziness (或 non-strictness) 的好處是什麼?其一是這些 take, foldr, map 等等函數都是可以在很多場合下重複使用的元件。 Non-strictness 增加了模組化的可能。其二是我們能表達「無限長 的串列」這種東西。 論效率的話,目前的 lazy 語言還是比較難實作得有效率。有人 提出一種所謂的「lenient evaluation」,認為是 lazy 與 eager 之間折衷的好方法。不過是否真如此就還需要研究了。 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.20.217
1F:推 jeunder:請問為何能夠有 "增加模組化的可能" ? 03/06 23:51







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP