过说回来,call/cc 在函数式编程里算高级内容。因为确实你提到的诸如在 while 里返回会用别的方式写。比如在表中查找,那肯定是写一个 find 函数传入一个谓词然后递归遍历表完成,用不上循环和break。
要说 scheme 也支持副作用状态和 do 语句,但不方便;这就跟说支持函数式风格的 c++ 写个 letrec 也各种别扭一样,对吧。
如果单纯是因为
if (p) return x;
a; b; c; return y;
比
(if p x (begin a b c y))
来得省心,那确实得想想为什么要有那么多非函数式的顺序结构出现了。
【 在 zhangxp024 的大作中提到: 】
: 玩racket也有好几年了,racket库比较全,从gui到web各种....
:
: 写着写着,发现racket,sbcl,clojure.... 没有return语句,只能在函数的最后一条一句返回。
: ...................
--
修改:milksea FROM 114.249.235.*
FROM 114.249.235.*