[英]What is complexity of Control.Monad.Writer for w ~ [a]?
假設tell = flip mappend
它應該是二次的,但這會使這個Writer
實例變得毫無用處。 如果確實如此,可以采取哪些措施來提高性能?
我正在考慮在Control.Monad.Free.Church
以及Control.Monad.Codensity
使用的技巧:應該可以重新關聯mappend
調用,就像Codensity
重新關聯>>=
,但我還沒想到究竟。
總結一下:
是的, tell
一個[a]
在Writer
有二次復雜性。 這可以通過使用被避免DList
(它使用Codensity
樣特技我說的是)或另一數據類型,其mappend
不是O(n^2)
最重要的是, Writer
為每個>>=
生成thunk用於構建計算。 這是一個問題,因為與第一種情況不同,它無法解決。 解決方案是使用State
monad。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.