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