continuations

    6熱度

    2回答

    在書中The Seasoned Schemer - 作者寫道下面的代碼: (define intersectall (lambda (lset) (letcc hop (letrec ((A (lambda (lset) (cond ((null? (car lset)) (hop (quote())))

    1熱度

    2回答

    我試圖理解延續傳遞和呼叫與電流延續。 按本頁: https://en.wikipedia.org/wiki/Monad_(functional_programming)#Continuation_monad 與CC方法呼叫被實現如下: call_cc :: ((a -> (b -> r) -> r) -> (a -> r) -> r) -> (a -> r) -> r call_cc f k =

    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_

    1熱度

    2回答

    我遇到了一個使用call/cc解釋Continuations的片段。在下面提供的片段中,call/cc調用的fn的延續是整個let塊還是調用/ cc下面的行?也有人可以提供一個解釋,爲什麼不提供整個let塊作爲延續? #lang racket (define resume-test-3 #f) (define test-3 (lambda() ; the let defines a

    1熱度

    3回答

    我試圖寫在斯卡拉尾遞歸快速通過建立一個持續的工作,而無需使用蹦牀。到目前爲止,我有以下幾點: object QuickSort { def sort[A: Ordering](toSort: Seq[A]): Seq[A] = { val ordering = implicitly[Ordering[A]] import ordering._ @scal

    10熱度

    1回答

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

    3熱度

    1回答

    讓我們考慮一個階乘函數的一個簡單的例子,寫的僞像CPS式(枚舉的中間結果&排序被省略了,因爲會很吵): (def (fact n k) (if (eq? n 0) (k 1) (fact (- n 1) (\result (k (* n result)))))) 調用延續(k 1)(即「返回」一個值)在技術上與「正常」函數調用不同,就像在else分支中一樣嗎?我想到的一件事是,在這種情況下,延

    2熱度

    1回答

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

    2熱度

    1回答

    代碼: type Result = string option type Parser<'a> = string -> int -> ('a -> Result) -> ('a -> Result) -> Result let win r = Some <| "Correct: " + r let lose _ = None let parse_a: Parser<char> = fun

    3熱度

    1回答

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