continuations

    3熱度

    2回答

    這是強大的技術使用遞歸,因爲其強大的描述功能。尾遞歸提供比正常遞歸更強大的計算,因爲它將遞歸更改爲迭代。持續傳遞樣式(CPS)可以將很多循環代碼變成尾遞歸。繼續Monad提供了遞歸語法,但實質上它是尾遞歸,這是迭代。它應該合理使用Continuation Monad爲100000階乘。這是代碼。 type ContinuationBuilder() = member b.Bind(x,

    2熱度

    2回答

    只是玩延續。目標是創建將接收另一個函數作爲參數的函數,以及執行量 - 和將應用參數給定次數的返回函數。 實現看起來相當明顯 def n_times[T](func:T=>T,count:Int):T=>T = { @tailrec def n_times_cont(cnt:Int, continuation:T=>T):T=>T= cnt match { case

    0熱度

    1回答

    我正在閱讀從here斯卡拉延續博客文章。不幸的是,這並不在斯卡拉2.10.0工作: def f():Int @cps[Int,Int] = {shift { (k:Int=>Int) => k(6) } - 1} <console>:10: error: wrong number of type arguments for util.continuations.cps, should be 1

    2熱度

    1回答

    我想使用boost :: future .then()函數。 該片段取自Boost 1.54.0 thread synchronisation documentation #include <string> #include <boost/thread/future.hpp> int main() { boost::future<int> f1 = boost::async([]()

    1熱度

    1回答

    我對結合任務並行庫和延續有效使用系統資源感興趣。 考慮以下使用GetResponseAsync() extension method defined in another recent question的情況。 WebRequest request = HttpWebRequest.Create(uri); Task<WebResponse> responseTask = request.Get

    1熱度

    1回答

    我有一個類,每個方法異步執行,即返回一個任務,但每個方法應該等待前面的調用完成。 繼續吧? 除了任務繼續在參數中使用委託(Action)而不是另一個任務。 我已經嘗試不同的東西,我可以做,使之工作最好的是以下(對我來說太複雜了)代碼: private Task QueueTask(Func<Task> futureTask) { var completionSource =

    3熱度

    2回答

    我想弄清楚如何獲得R的callCC函數,用於短路評估一個函數以評估函數,如lapply和Reduce。 動機 這將使減少和和lapply具有漸近效率> O(N),允許您 出口計算的早期。例如,如果我在列表中搜索一個值,我可以在列表中映射'finder'函數,第二個函數會發現lapply停止運行並返回該值(就像打破循環一樣,或者使用return語句提前突破)。 問題是我在編寫lapply和Reduc

    5熱度

    3回答

    繼續描述接下來發生的一些事情,對吧? 這不僅僅是一個函數,它需要一個值並進行一些計算? (+ (* 2 3) 5) 的(* 2 3)的延續,是(+ _ 5) (define k (lambda (v) (+ v 5))) 什麼是這裏使用call/cc,而不是使用功能k點?

    1熱度

    2回答

    我正在使用akka數據流,我想知道是否有辦法導致特定的代碼塊等待未來的完成,而不明確使用該值未來。 實際使用案例是我有一個文件,並且我希望文件在特定的未來完成時被刪除,但不是之前。這是一個粗略的例子。首先想象我有這樣的服務: trait ASync { def pull: Future[File] def process(input : File): Future[File]

    1熱度

    2回答

    我試圖在已經存在的非常大的同步代碼庫中使用async/await。在這個代碼庫中有一些全局狀態,如果kludgy在同步上下文中工作正常,但它在async/await的異步上下文中不起作用。 所以,我的兩個選擇似乎是兩種因素走出全球範圍內其woould是一個非常大和非常耗時的任務,或者做一些巧妙的搭配延續時運行。 爲了更好地理解異步/等待和延續,我做了一個測試程序,如下圖所示。顯示在這裏。 // A