【发布时间】:2011-05-16 16:15:02
【问题描述】:
有时当我在编程时,我发现某些特定的控制结构对我来说非常有用,但在我的编程语言中并没有直接可用。我认为我最常见的愿望是“分手”(我不知道实际上该怎么称呼它):
{
foo();
} split_while( condition ) {
bar();
}
这段代码的语义是foo() 总是运行,然后检查条件。如果为真,则运行bar(),然后我们返回第一个块(因此再次运行foo(),等等)。感谢a comment by reddit user zxqdms,我了解到Donald E. Knuth 在他的论文"Structured programming with go to statements"(参见第279 页)中写到了这个结构。
您认为哪些替代控制结构是组织计算的有用方式?
我的目标是为自己和其他人提供有关构建代码的新思维方式,以改进分块和推理。
注意:我不是在问如何概括所有可能的控制结构,无论是使用jne、if/goto、Lisp 宏、延续、单子、组合子、夸克或其他任何东西。我在问什么专业化对描述代码有用。
【问题讨论】:
-
需要成为社区 wiki 以避免因主观性而关闭(没有真正的答案)。
-
对于“split_while”,在Sather 你可以做
loop statement1; while!(condition); statement2; end; -
FWIW 这样的控制结构 (
splitWhile) 可以很容易地在 Scala 中实现:paste.pocoo.org/show/297023 :-) -
在 Clojure 中更简单:gist.github.com/718750:D
-
我在 Programmers.Se 上发布了一个类似的问题:programmers.stackexchange.com/q/22070/389
标签: loops programming-languages control-structure