Racket中延续的类型是什么?以及如何确定调用/ cc调用的当前延续? (例如:假设当前延续是紧接在看涨/ cc收盘后的当前延续是否是正确的策略?)
答案 0 :(得分:1)
延续是一个过程(在某种意义上它可以调用并且对procedure?
返回true),虽然是一个不会返回到延续调用者的特殊过程。
您调用continuation的值将成为创建它的call/cc
调用的返回值。
示例:
> (define $k #f)
> (call-with-values (lambda () (call/cc (lambda (k)
(set! $k k))))
(case-lambda (() "Zero values")
((x) "One value")
((x y) "Two values")
((x y z) "Three values")))
"One value"
> (procedure? $k)
#t
> ($k)
"Zero values"
> ($k 1)
"One value"
> ($k 1 2)
"Two values"
> ($k 1 2 3)
"Three values"
> ($k 1 2 3 4)
#<case-lambda-procedure>: arity mismatch;
the expected number of arguments does not match the given number