F# 如何在调试器中检查函数的本地值?

F# 如何在调试器中检查函数的本地值?,f#,F#,如何在调试器中检查函数的本地值 我试着把我的头脑集中在咖喱和功能性构图上 在这样做时,我希望利用调试器。 但是,在使用调试器时,我无法检查add函数中“a”和“b”的值 let add a b = a + b;; // set a breakpoint here let addTen = add 10;; let result = addTen 20;; 我甚至尝试使用以下方法打印值: let add a b = printfn "a equals: %a and

如何在调试器中检查函数的本地值

我试着把我的头脑集中在咖喱和功能性构图上

在这样做时,我希望利用调试器。 但是,在使用调试器时,我无法检查add函数中“a”和“b”的值

let add a b = 
        a + b;; // set a breakpoint here

let addTen = add 10;;
let result = addTen 20;;
我甚至尝试使用以下方法打印值:

let add a b = 
    printfn "a equals: %a and b equals: %b" a b
    a + b

我做错了什么?

使用
printfn的版本的问题在于占位符错误
%a
是一个需要两个参数的通用格式说明符,
%b
需要一个
bool

尝试将函数更改为:

let inline add a b = 
    printfn "a equals: %A and b equals: %A" a b
    a + b
现在,当应用所有参数时,它将打印“调试”文本:

> let addTen = add 10;;

val addTen : (int -> int)

> let result = addTen 20;;
a equals: 10 and b equals: 20

val result : int = 30

如果这是一个脚本文件,您就不能轻松调试F#脚本:目前它是一个FS文件。所以我可以把逻辑放到脚本文件中,然后使用调试器检查函数中的本地值?我很好奇为什么在标准FS文件中不能有这种行为?谢谢Mark。“内联”提供了什么价值?是的,我在询问之前查看了它,只能得出性能。我不确定使用内联是否有效。@ScottNimrod尝试删除
inline
关键字。如果这样做,编译器将默认解释函数类型,使其仅在
int
上工作。使用
inline
,它可以与定义了
+
的任何类型一起工作。