callcc

    3熱度

    1回答

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

    8熱度

    2回答

    Ruby的callcc捕獲當前的繼續,可以隨後調用它來恢復控制,但不是數據。我想要捕捉當前的延續以及當前的內存形象。 在我看來,捕獲堆應該不是很困難;我可以依靠ObjectSpace::each_object和ObjectSpace::dump_all或Marshal.dump或簡單地Object.clone。但是,我沒有看到任何直接的方法來恢復堆。理想情況下,我想遍歷object_id -> o

    5熱度

    3回答

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

    1熱度

    2回答

    請看一看two-in-a-row*?功能在第19章 我的問題是關於在get-first輔助函數的(leave '())。請注意,(waddle l)將返回'()或原子,這表明列表已用盡或列表中的原子被檢索到。 沒有(leave '())它仍然會返回這兩種值,只是不使用延續leave。但書中說沒有(leave '())是壞的,我只是不明白爲什麼。 ​​3210 非常感謝。 關於這個問題的另一個有趣的

    7熱度

    1回答

    考慮函數quux的Haskell中的以下示例以及continuation monad和callCC的定義。 instance Monad (Cont r) where return x = cont ($ x) s >>= f = cont $ \c -> runCont s $ \x -> runCont (f x) c callCC :: ((a -> Cont r b

    2熱度

    1回答

    以下兩個代碼塊的應該(在我心中)是無限循環 這工作 (define call/cc call-with-current-continuation) (define l 0) (define i 0) ((lambda() (call/cc (lambda (k) (set! l k))) (write i) (newline)

    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熱度

    1回答

    請考慮以下定義。我正在使用Racket。 (define fact/k (lambda (n k) (cond ((zero? n) (call/cc (lambda (f) (k f)))) (else (* n (fact/k (sub1 n) k)))))) (define five (call/cc (lambda (k) (fact/k 5

    0熱度

    1回答

    在過去的幾天裏,我一直在玩弄計劃(特別是詭計)的延續,並且對於某些函數的結果感到有點困惑並且想知道是否任何人都可以解釋到底發生了什麼。 有一個名爲(get-token)將在一個給定的文件檢索發現旁邊標記功能。例如,如果接下來的3個標記是「a」,「b」和「c」,調用(get-token)將在第一次調用時返回「a」,第二次調用時返回「b」和「c」第三次被稱爲。 我想要做的是有一個函數(peek-tok

    3熱度

    1回答

    我正在嘗試審查課程的幻燈片。代碼應該打印「早期工作」一次,然後「後來工作」兩次(可以設置後續工作的重複次數)。但我想知道爲什麼這個代碼不起作用,我該如何修改代碼?由於現在的代碼會產生「以後的工作」,而不是2的無限循環(這應該是) require 'continuation' def work p "early work" here = callcc {|here| here}