F#:为什么我不能在范围关闭的行上设置断点?

Mil*_*oDC 5 f# scope breakpoints

myList |> List.filter (fun item ->
    if item.MyValue < 10 then
        sideEffect ()
        true
    else
        false )
Run Code Online (Sandbox Code Playgroud)

如果我设置断点false ),则会被忽略/跳过.

我必须:

        false
)
Run Code Online (Sandbox Code Playgroud)

我并不是很想知道为什么会这样(很容易做出有根据的猜测),就像知道这是否会被解决一样.

Bri*_*ian 5

它并没有在VS2012中修复,所以谁知道(未来太远以至于预测更多).我们的调试器支持在VS2010中"足够好",我们选择不在此周期中投入太多资金; 客户很少提到调试器*(也许是因为人们发现他们很少需要调试F#代码?),所以我们没有优先考虑它.

(* - 有一个例外;当调试管道或大型表达式时,人们真的希望看到中间值/返回值 - 这个请求对于C#和F#用户来说都很常见(尽管对F#来说可能更重要).事实上,我只是看起来它是迄今为止VS调试器的最高投票用户请求:

http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2206747-function-return-value-in-debugger

所以去那里添加你的声音.)

通常情况下,所有这些小调试器问题都可以通过将代码扩展到更多行或引入更多中间变量来解决; 更改代码只是为了使其更具可调试性是令人讨厌的,但值得一提的是真正需要它的人的解决方法.