這是強大的技術使用遞歸,因爲其強大的描述功能。尾遞歸提供比正常遞歸更強大的計算,因爲它將遞歸更改爲迭代。持續傳遞樣式(CPS)可以將很多循環代碼變成尾遞歸。繼續Monad提供了遞歸語法,但實質上它是尾遞歸,這是迭代。它應該合理使用Continuation Monad爲100000階乘。這是代碼。 type ContinuationBuilder() =
member b.Bind(x,
我正在閱讀從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
我試圖在已經存在的非常大的同步代碼庫中使用async/await。在這個代碼庫中有一些全局狀態,如果kludgy在同步上下文中工作正常,但它在async/await的異步上下文中不起作用。 所以,我的兩個選擇似乎是兩種因素走出全球範圍內其woould是一個非常大和非常耗時的任務,或者做一些巧妙的搭配延續時運行。 爲了更好地理解異步/等待和延續,我做了一個測試程序,如下圖所示。顯示在這裏。 // A