continuations

    2熱度

    1回答

    type VAR = identifier type code = instruction list type environment = identifier list type EXPR = environment -> code * environment fun ADD_OP expr expr' env = DUMMY fun SUB_

    0熱度

    1回答

    鑑於這樣的事情: .ContinueWith((_, o) => this.Foo(), null, TaskContinuationOptions.OnlyOnRanToCompletion) .ContinueWith((_, o) => this.Bar(), null, TaskContinuationOptions.OnlyOnFaulted) .ContinueWith((_, o

    10熱度

    1回答

    我試圖實現一個返回遞歸閉包的函數,雖然我不知道如何在函數簽名中表示該函數。這裏是Python中的工作實現的示例代碼 def counter(state): def handler(msg): if msg == 'inc': print state return counter(state + 1) if msg == 'dec':

    2熱度

    1回答

    這個問題在SO上已經被問了好幾次了,但是他們都沒有解決我的問題。 什麼是延續? 考慮下面的代碼: ((lambda (pair) (begin (print (car pair)) ((cdr pair) (cons (+ 1 (car pair)) (cdr pair))))) (call/cc (lambda (k) (

    2熱度

    2回答

    我已經實現了map尾遞歸和延續傳球風格。兩個版本都非常相似: var inc = x => ++x; var xs = [1,2,3,4,5]; var mapR = f => xs => { var rec = acc => { acc[acc.length] = f(xs[acc.length]); return acc.length < xs.leng

    0熱度

    2回答

    ,我有以下CPS實施until: until' p f x cc = p x (\y -> if y then cc(x) else until' p f (f x (\z -> cc(z))) cc) 哪種類型的檢查OK!現在,試圖CPS map: map' f (x:xs) cc = f x (\y -> map f xs (\ys -> cc(y:ys))) 另

    3熱度

    1回答

    我沿着紙條在球拍上學習call/cc繼續舉例:異常,時間旅行搜索,生成器,線程和協程1。 該論文提到最有利的API是通過提供程序lambda (cc) (cc cc)從call/cc得出的。我明白這個具體的call/cc調用返回當前延續的第一類對象到主程序。 在下面的例子中,該文件調用了所有這些(right-now)。 我看到的是,在同一個示例中,上述call/cc調用返回的對象cc總是在後面運行

    1熱度

    2回答

    我用的球拍,我得到的結果爲4以下簡單的代碼: (let/cc done ((let/cc esc (done (+ 1 (let/cc k (esc k))))) 3)) 和我要執行這個代碼一步一步的。 首先,我改變了第一let/cc成call/cc形式象下面這樣: (call/cc (λ (done) ((let/cc esc

    0熱度

    1回答

    可以說我有一個Python程序,並執行以下操作: do_some_long_data_crunching_computation() call_some_fiddly_new_crashing_function() 有沒有一種方法來「凍結」和序列化Python程序的狀態(全第一長計算的折返點後,全局和這樣的),然後再次重申新功能的開發,並重新啓動從這個角度程序執行? 這有點可能的,如果你正在

    5熱度

    2回答

    我已經在F#中編寫了一個有趣的函數,它可以遍歷和映射任何數據結構(非常類似於Haskell的Scrap Your Boilerplate中的everywhere函數)。不幸的是,即使是相當小的數據結構,它也很快導致堆棧溢出。我想知道如何將它轉換爲尾遞歸版本,延續傳遞樣式版本或命令式等效算法。我相信F#支持monad,所以延續monad是一個選項。 // These are used for a 5