trampolines

    8熱度

    3回答

    這些語言不支持'本地'相互遞歸函數優化,所以我猜它一定是蹦牀或..嘿..重寫爲循環)我想念什麼? UPDATE:看來我沒有撒謊FSharp,但我沒有看到相互尾通話的例子,而谷歌搜索

    18熱度

    2回答

    如果正確地明白scala.util.control.TailCalls可以被用於通過使用一個蹦牀,以避免非尾遞歸函數堆棧溢出。在API中給出的例子很簡單: import scala.util.control.TailCalls._ def isEven(xs: List[Int]): TailRec[Boolean] = if (xs.isEmpty) done(true) else

    67熱度

    7回答

    在最近的工作討論中,有人提到了蹦牀功能。 我已閱讀說明Wikipedia。對功能進行總體概括就足夠了,但我希望更具體一些。 你有簡單的代碼片段可以說明蹦牀嗎?

    15熱度

    3回答

    我已經寫了一個C/C++的非混合的小Scheme解釋器,但我還沒有實現proper tail calls。 我知道經典的Cheney on the MTA algorithm,但是還有其他很好的實現方法嗎?我知道我可以將Scheme堆棧放在堆上,但這仍然不是正確的消除,因爲標準說應該支持無限數量的活動尾部調用。 我也擺弄了longjmps,但到目前爲止,我認爲它只會適用於非共同遞歸尾調用。 主要的

    9熱度

    2回答

    我們正在開發iOS應用程序。當我們在PC上測試應用程序時,一切運行良好,但是當我們在iPad/iPhone4上運行它時,我們經常收到「蹦牀類型2」錯誤消息和應用程序崩潰。過去幾天我們一直在試圖找出原因/修復它,並嘗試了我們在網上找到的所有建議,但我們仍然沒有取得任何進展。我們發現的唯一解決方案來自帖子/網頁,談論如何使用編譯器設置調整蹦牀設置:-aot「nrgctx-trampolines = 4

    3熱度

    1回答

    我正在考慮像CPS這樣的解釋器中使用的基於演員的語言。 參數在變體的陣列中傳遞的功能,並且在相同陣列中返回的延續,所以一個簡單的函數 def add (x,y) => x + y 所以從讀/ EVAL /迴路的呼叫將是 print(add(7, 5)) 將在條目是 [&add, x, y, &print, _, &repl, ...] 其中_是一個空槽,其中函數返回值被寫入。 在執行的