Racket 中的延续类型是什么?以及如何确定查看 call/cc 调用的当前延续?(例如:假设当前的延续是紧跟在 call/cc 右括号之后的内容是正确的策略吗?)
问问题
102 次
1 回答
1
延续是一个过程(从某种意义上说,它是可调用的并返回 true procedure?
),尽管它是一个特殊的过程,它不会返回给延续的调用者。
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
于 2014-12-13T04:08:42.197 回答