F#对于C#和Haskell程序员来说是什么?

16

对于Haskell程序员来说,推荐学习F#的教程是什么?F#似乎借鉴了很多Haskell的思想,但有些细节问题让代码写起来很困难。

一般来说,我需要一步一步地学习F#,不需要解释可变数据和不可变数据之间的区别(在这个方面上,Haskell要严格得多)。

我略懂C#,所以对.Net也有一定的了解。


2
你的历史认识是错误的。F# 在很大程度上借鉴了 ML,而 Haskell 也从中借鉴了很多。说 F# 是受到 Haskell 启发的就像说 Java 是受到 C# 启发的一样。 - Pascal Cuoq
11
F#大部分基于ML语言,但也借鉴了Haskell的其他特性(这并不奇怪,因为有些人同时从事这两种语言的开发工作)。 - Gabe
http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Don-Syme-Introduction-to-F-1-of-3/ - fredoverflow
2
@Pascal:F#中的东西可能起源于ML,但由于极度以Haskell为中心的微软,它肯定是经过了Haskell的。F#直接从OCaml中获取的少数功能具有外来感。例如,静态类型的printf但未对其进行优化;使用OCaml语法但替换了像自动缩进这样的专业工具,而采用了面向GUI挑战显示器设计的Haskell风格的#light语法;多年来,F#只有类似于Haskell的模式匹配,没有像MLs中的或模式这样的高级功能;弱推断像Haskell一样,但没有OCaml所享有的结构类型。 - J D
2个回答

19

由于您已经了解90%的概念,因此我会专注于语法,并根据需要阅读例如F#语言参考。选择一些基本任务,尝试编码并使用参考材料进行解决,当您遇到困难时在这里提问。

(您不会找到很多针对您的文档,因为“我知道Haskell,但不知道ML或F #”的人群比“我知道C#,但不知道Haskell,ML或F#”的人群小得多。)

(您还可以考虑从我的博客中挑选和选择;我写入了初学者和高级内容。)


谢谢。我有点害怕阅读语言参考,但是它是最有价值的资源之一,写得非常好。 - Maciej Piechotka

7

3
我不是说这些书籍/来源不好,但它们的方法有所不同。我不是一个用“for”循环思考的人,而是需要知道如何将“intercalate "." . map show”改写为 F#(这是 Brian 提到的问题)。 - Maciej Piechotka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接