scheme 有 call-with-current-continuation,剩下的就是库可以实现的语法糖了。这个长名字在很多 lisp 方言中叫 call/cc。
而lisp的一个特点就是宏和自定义语法满天飞,语法糖到处是,方言千奇百怪。
去学一下 call/cc,然后你可以定义自己的 return 语句。——其实是发现用另一种思路完成类似的效果。
命令式编程和函数式编程各自有自己的背景和语义,互不熟悉很正常。像 call/cc 就是 lambda 演算下的一个特殊变换,是可以用纯函数式编程概念解释的。而类似的,return 语句在命令式编程下语义是栈操作和 goto,也不是人人熟悉的。
【 在 zhangxp024 的大作中提到: 】
: 玩racket也有好几年了,racket库比较全,从gui到web各种....
:
: 写着写着,发现racket,sbcl,clojure.... 没有return语句,只能在函数的最后一条一句返回。
: ...................
--
修改:milksea FROM 114.249.235.*
FROM 114.249.235.*