簡體   English   中英

什么是對於w~ [a]的Control.Monad.Writer的復雜性?

[英]What is complexity of Control.Monad.Writer for w ~ [a]?

假設tell = flip mappend它應該是二次的,但這會使這個Writer實例變得毫無用處。 如果確實如此,可以采取哪些措施來提高性能?

我正在考慮在Control.Monad.Free.Church以及Control.Monad.Codensity使用的技巧:應該可以重新關聯mappend調用,就像Codensity重新關聯>>= ,但我還沒想到究竟。

總結一下:

  1. 是的, tell一個[a]Writer有二次復雜性。 這可以通過使用被避免DList (它使用Codensity樣特技我說的是)或另一數據類型,其mappend不是O(n^2)

  2. 最重要的是, Writer為每個>>=生成thunk用於構建計算。 這是一個問題,因為與第一種情況不同,它無法解決。 解決方案是使用State monad。

暫無
暫無

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

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