我想創建一個新的類,將包裝當前.net ConcurrentDictionary,以確保GetOrAdd \ AddOrUpdate的添加委託將被確保只被調用一次。我在網絡上看到了一些解決方案,主要的一點是懶惰地包裝TValue,這樣可以添加許多懶惰物品,但只有一個可以生存並調用它的價值工廠。 這裏就是我想出: public class LazyConcurrentDictionary<TKey,
我想測試一個小測試程序的內存使用情況。該程序如下所示: import Data.List as L
main :: IO
main = print $ L.find (==100000) [1..1000000000]
它找到了第100000個值。我期望看到這個程序只會使用內存100000個值。當我通過+RTS -hy生成內存配置文件時,我得到一個空的配置文件: 我很驚訝,並認爲GHC可能
我不明白我怎麼能打電話lseq函數,以便它將永遠運行。 type 'a llist = LazyList of 'a * (unit -> 'a llist)
let rec lseq nr =
LazyList (nr, fun() -> lseq (nr+1))
如果我叫 lseq 5
我得到 int llist = LazyList (5, <fun>)