"Why use F#?" in one page

https://swlaschin.gitbooks.io/fsharpforfunandprofit/content/why-use-fsharp/

占位符,这个系列太长了,我先去翻译比较干的部分

尽管F#非常适合科学或数据分析等专业领域,但它也是企业开发的绝佳选择。以下是你应该考虑在你的下一个项目中使用F#的五个好理由。

简洁性 Conciseness

F#不会被大括号、分号等编码 "噪音 "弄得杂乱不堪。

由于有强大的类型推理系统,你几乎不需要指定一个对象的类型。

而且,与C#相比,解决同样的问题通常需要更少的代码行。

// one-liners
[1..100] |> List.sum |> printfn "sum=%d"

// no curly braces, semicolons or parentheses
let square x = x * x
let sq = square 42 

// simple types in one line
type Person = {First:string; Last:string}

// complex types in a few lines
type Employee = 
  | Worker of Person
  | Manager of Employee list

// type inference
let jdoe = {First="John";Last="Doe"}
let worker = Worker jdoe

方便性 Convenience

许多常见的编程任务在F#中都要简单得多。这包括创建和使用复杂的类型定义,进行列表处理,比较和平等,状态机,以及更多的事情。

由于函数是第一类对象,通过创建有其他函数作为参数的函数,或者结合现有的函数来创建新的功能,可以很容易地创建强大和可重用的代码。

正确性 Correctness

F#有一个强大的类型系统,可以防止许多常见的错误,如空引用异常。

默认情况下,值是不可变的,这可以防止一大类错误。

此外,你通常可以使用类型系统本身对业务逻辑进行编码,这样实际上就不可能写出错误的代码或混淆计量单位,大大减少了对单元测试的需求。

并发性 Concurrency

F#有许多内置的库,可以在同一时间发生多件事情时提供帮助。

异步编程非常容易,并行也是如此。 F#也有一个内置的角色模型,以及对事件处理和功能反应式编程的出色支持。

当然,由于数据结构默认是不可变的,所以共享状态和避免锁是非常容易的。

完整性 Completeness

尽管本质上它是一种函数式语言,但 F# 确实支持其他并非 100% 纯的样式,这使得与网站、数据库、其他应用程序等非纯世界的交互变得更加容易。

特别是,F# 被设计为一种混合函数式/OO 语言,因此它几乎可以完成 C# 可以做的所有事情。

当然,F# 是 .NET 生态系统的一部分,它使您可以无缝访问所有第三方 .NET 库和工具。它可以在大多数平台上运行,包括 Linux 和智能手机(通过 Mono 和新的 .NET Core)。

最后,它与 Visual Studio (Windows) 和 Xamarin (Mac) 完美集成,这意味着您将获得一个支持 IntelliSense 的强大 IDE、一个调试器以及许多用于单元测试、源代码控制和其他开发任务的插件。

或者在 Linux 上,您可以改用 MonoDevelop IDE。

# The "Why Use F#?" series

占位,太长了,只翻译标题不翻译内容意义不大,等翻译完后面的文章了再回来把这里补上(也许永远不补呢,谁知道呢,我这个大鸽子)(TODO:补全翻译)

Last updated