lazy-evaluation

    1熱度

    1回答

    我想創建一個新的類,將包裝當前.net ConcurrentDictionary,以確保GetOrAdd \ AddOrUpdate的添加委託將被確保只被調用一次。我在網絡上看到了一些解決方案,主要的一點是懶惰地包裝TValue,這樣可以添加許多懶惰物品,但只有一個可以生存並調用它的價值工廠。 這裏就是我想出: public class LazyConcurrentDictionary<TKey,

    1熱度

    1回答

    我想將相當多的參數傳遞給一個函數(實際上它是一個引用類初始化函數)。我正在考慮使用三點省略號將參數傳遞給類初始化程序,但它不起作用。下面是我的示例代碼: SomeClass<-setRefClass("SomeClass", fields=list(a="numeric",b="numeric",c="character")) SomeClass_1<-setRefClas

    2熱度

    1回答

    我想測試一個小測試程序的內存使用情況。該程序如下所示: import Data.List as L main :: IO main = print $ L.find (==100000) [1..1000000000] 它找到了第100000個值。我期望看到這個程序只會使用內存100000個值。當我通過+RTS -hy生成內存配置文件時,我得到一個空的配置文件: 我很驚訝,並認爲GHC可能

    2熱度

    2回答

    我有一個屬性,哪個getter應該只在第一次加載它的值。第二次返回加載的值,而無需再次加載它: private Object _MemberValue; public Object MemberValue { get { if(_MemberValue == null) { _MemberValue = LoadMember();

    1熱度

    2回答

    我試圖在Javascript中實現Y組合器。 我設法執行下列規定: const y0 = gen => (f => f(f))(f => gen(x => f(f)(x))); const factorial0 = y0(fact => n => n<=2 ? n : n * fact(n-1)); console.log(factorial0(5)); // 120 它運作良好。 然後

    1熱度

    2回答

    這是發佈here但在Java中的相同問題,因爲在C#中,yield會解決我的問題。 例如:如果有[1,2] [5,6]。我想得到[1,5] [1,6] [2,5] [2,6] 但是,如果我只有一個列表[1,2,3],結果將是[1, 2] [1,3] [2,3] 這是我有: public static <T,K> Collection<Entry<T,K>> Pairs (List<T> l1, L

    1熱度

    1回答

    我在Haskell,在那裏我有一條線,確實是這樣寫的一段代碼: addElement :: [a] -> a -> [a] addElement list elem = list ++ [elem] 我需要(或者至少,我是這樣認爲的),這樣的功能對於增加的目的我正在實現的圖形數據結構的頂點列表中的新頂點。現在,我可以這樣稱呼這個功能 newlist = addElement oldlist

    1熱度

    1回答

    我想使用dplyr函數編寫一個函數來輸出z中每個元素的唯一元組(z,y)。該功能是這樣的 library(tidyverse) data <- data_frame(z = rep(c('a', 'b'), 50), y = sample(letters[13:18], size = 100, T)) foo1 <- function(data, x, n){ li

    0熱度

    1回答

    我不明白我怎麼能打電話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>)

    6熱度

    1回答

    我想了解R中懶惰評估的工作原理。它只適用於函數參數的評估嗎?因爲我明白,例如 f <- function(x = x, y = x*2) { c(x, y) } f(2) [1] 2 4 但是在其他語言中,例如, Haskell懶惰的評估意味着函數調用只有在實際使用時纔會被評估。所以,我希望這樣的事情在瞬間運行: g <- function(x) { y <- sa