关于F#习语和风格的反馈,你要做什么;;中庸 我主要是在寻找关于F#习语和风格的反馈,因为我才刚刚开始,我正在努力自学。开始采用最佳实践永远都不为时尚早 “;”是用来做什么的 为什么我的script.fsx文件中的函数和表达式有时似乎需要“;”es(如果没有双分号,则会出现语法错误),而有时则不需要 在下面的代码中,函数测试只是test2的一个初始条件保护,这让我觉得很不雅观。我怎样才能将它们组合成一个函数?是否有理由尝试将test和test2合并到一个函数中 此处未使用main的参数argv。可以删除吗 main基本上是所有小函数的单元测试。有没有一种更有效或更优雅的方法来单元测试F#代码 你能在函数中加入空行来提高可读性吗 开放系统 (* 2.6声明F#函数不可除:int*int−> 布尔在哪里 当且仅当d不是n的除数时,notDivisible(d,n)为真。 例如,notDivisible(2,5)为true,notDivisible(3,9)为false。 汉森,迈克尔R。。 使用F#的函数式编程(第39-40页)。 剑桥大学出版社,Kindle版。 *) 设可除dn=(0=n%d);; 设不可除dn=not(可除dn);; (* 2.7 2.7.1声明F#函数测试:int*int*int->bool。测试值(a、b、c), 暂时≤ b、 是以下各项的真值: 不可分(a,c)和 不可除(a+1,c)和 . . . 不可分(b,c) 2.7.2声明一个F#函数prime:int->bool,其中prime(n)=true, 当且仅当n是质数。 2.7.3下一步声明一个F#函数:int->int, 其中nexttime(n)是大于n的最小素数。 汉森,迈克尔R。。 使用F#的函数式编程(第40页)。 剑桥大学出版社,Kindle版。 *) 让rec test2 a b c= 如果(a

关于F#习语和风格的反馈,你要做什么;;中庸 我主要是在寻找关于F#习语和风格的反馈,因为我才刚刚开始,我正在努力自学。开始采用最佳实践永远都不为时尚早 “;”是用来做什么的 为什么我的script.fsx文件中的函数和表达式有时似乎需要“;”es(如果没有双分号,则会出现语法错误),而有时则不需要 在下面的代码中,函数测试只是test2的一个初始条件保护,这让我觉得很不雅观。我怎样才能将它们组合成一个函数?是否有理由尝试将test和test2合并到一个函数中 此处未使用main的参数argv。可以删除吗 main基本上是所有小函数的单元测试。有没有一种更有效或更优雅的方法来单元测试F#代码 你能在函数中加入空行来提高可读性吗 开放系统 (* 2.6声明F#函数不可除:int*int−> 布尔在哪里 当且仅当d不是n的除数时,notDivisible(d,n)为真。 例如,notDivisible(2,5)为true,notDivisible(3,9)为false。 汉森,迈克尔R。。 使用F#的函数式编程(第39-40页)。 剑桥大学出版社,Kindle版。 *) 设可除dn=(0=n%d);; 设不可除dn=not(可除dn);; (* 2.7 2.7.1声明F#函数测试:int*int*int->bool。测试值(a、b、c), 暂时≤ b、 是以下各项的真值: 不可分(a,c)和 不可除(a+1,c)和 . . . 不可分(b,c) 2.7.2声明一个F#函数prime:int->bool,其中prime(n)=true, 当且仅当n是质数。 2.7.3下一步声明一个F#函数:int->int, 其中nexttime(n)是大于n的最小素数。 汉森,迈克尔R。。 使用F#的函数式编程(第40页)。 剑桥大学出版社,Kindle版。 *) 让rec test2 a b c= 如果(a,f#,idioms,F#,Idioms,有两种使用F#的方法-使用fsc(.fs文件)编译程序集和编写要使用fsi执行的脚本文件。请耐心听我说,如果我说的是显而易见的,那以后会有关系的 通常,当您编写脚本时,您在执行代码的同时对其进行实验,并捕获REPL会话的结果以供以后使用。这就是纯粹的fsi使用工件的;的来源(如注释中所述) 这种基于REPL的方法的一个副作用是,您在脚本中拥有的东西的形状最终可能会反映出实现者如何达到目的的路径,而不是经过深思熟虑的设计,而且由于脚本更多地是一次性的东西,这通常是可以接受的。这就是代码如何演变为只

有两种使用F#的方法-使用fsc(.fs文件)编译程序集和编写要使用fsi执行的脚本文件。请耐心听我说,如果我说的是显而易见的,那以后会有关系的

通常,当您编写脚本时,您在执行代码的同时对其进行实验,并捕获REPL会话的结果以供以后使用。这就是纯粹的fsi使用工件的
的来源(如注释中所述)

这种基于REPL的方法的一个副作用是,您在脚本中拥有的东西的形状最终可能会反映出实现者如何达到目的的路径,而不是经过深思熟虑的设计,而且由于脚本更多地是一次性的东西,这通常是可以接受的。这就是代码如何演变为只有一次使用-将
test
test2
放在一起是一个不错的主意,虽然我可能会建议这样做,如果它们是一些可重用库的一部分,并且
test2
本身除了作为测试的一部分之外没有明确的使用场景,我认为这不一定重要

但是,文件末尾的
main
函数是控制台应用程序的入口点,因此使用F#的编译方式在脚本中没有任何位置和特殊意义。我相信它只是粘贴在那里,没有明显的原因

[<EntryPoint>]
let main argv =
    0
[]
让主argv=
0
您可以直接删除它并在脚本中直接执行所有这些行


您可以使用.NET的所有标准单元测试框架测试F#代码,但这更多的是编译程序集路径的一个用例。脚本不可通过这种方式进行单元测试,您可以通过交互方式或通过与现有测试类似的内联测试对其进行测试。

在键入脚本时需要在每个表达式的末尾进行测试直接输入FSI。但我建议您不要直接输入FSI。只需向其发送代码(通常使用Alt Enter键),然后您就不需要使用
。还有许多其他优点。如何将测试和测试2合并到一个函数中?我还不知道如何做到这一点。
[<EntryPoint>]
let main argv =
    0