我有一个带有可选退出条件的顺序进程。编写算法的一种方法就是这样
let mutable more = true
for slot = startSlot to endSlot do
if more then
more <- process()
检查more
由于退出而跳过的插槽的开销是微不足道的。不过,似乎应该有更优雅的方式表达这一点。
答案 0 :(得分:10)
递归通常在这里:
{{1}}
编译器会将此减少为一个简单的循环(不会发生实际的递归)。
答案 1 :(得分:5)
这样做的一种方法是使用Seq.takeWhile
seq{startSlot .. endSlot}
|> Seq.takeWhile (fun _ -> process())
|> Seq.iter ignore
当process()
返回false