簡體   English   中英

功能語言和對memoization的支持

[英]Functional languages & support for memoization

當前任何一種流行的函數式語言都能很好地支持memoization嗎?如果我要根據它的memoisation選擇一個,你會推薦和為什么?

更新:我正在尋找優化有向圖(節點可以是函數或數據)。 當圖中的節點被更新時,我希望僅當它們依賴於已更改的節點時才重新計算其他節點的值。

Update2:需要免費或開源語言/運行時。

對於Haskell,Conal Elliott發布了一篇關於功能備忘錄嘗試的精美博客文章。 這項工作非常聰明且非常深刻,后來Conal將其擴展到多態函數 無論你使用什么語言,強烈建議使用這些東西,因為它揭示了函數式語言中記憶化的深層思想

但是,看看你的更新,目前還不清楚memoization是否真的是你想要的。 您擴展的問題陳述(通過有向圖傳播更新)幾乎是增量計算的教科書示例,Bob Harper和Umut Acar已經完成了大量工作。 我相信他們有一個用標准ML編寫的免費庫。 查看Umut關於自我調整計算的頁面。

在Haskell上,請看這個開始。

對於Lisp來說, 是谷歌的第一個看起來相關的熱門話題。

對於F#來說, 可能是一個很好的起點。

現在我為你做谷歌搜索。 這有什么支持嗎? 你決定 :-)

哦,我推薦Mathematica,但我知道很多人都被它的價格標簽推遲了。 嚴格來說,它可能更像是一個術語重寫系統,而不是一個函數式編程系統,而且它在任何意義上都不是純粹的。 但它確實做了記憶。

編輯:我忘記了Erlang,它目前有很大的牽引力 - 我不知道如何,但我希望它可以做記憶。

是的,你根本不需要記憶,你需要精確的依賴性跟蹤。 您可以使用Haskell功能圖庫(fgl)創建ur有向圖,然后使用后繼函數准確地知道要更新的節點: http//hackage.haskell.org/cgi-bin/hackage-scripts/package/ FGL

本文將極大地幫助理解文檔: http//web.engr.oregonstate.edu/~erwig/fgl/

后繼函數在模塊Data.Graph.Inductive.Graph中命名為suc

朝着不同的方向發展,一種支持這種功能的流行功能語言是Excel。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM