【发布时间】:2011-03-16 11:30:01
【问题描述】:
我是一名 Java/C++ 开发人员,从未花时间学习 C# 和相关的 .NET 基础。
然后我学习了 OCaml,因为我必须将它用于我的硕士论文,所以我听说了 F# 并想知道:F# 是否允许我轻松使用 .NET API 来构建功能齐全的应用程序(可能涉及 GUI、套接字等) ) 没有任何问题?
我问这个是因为 F# 语法和概念似乎与 OCaml 非常相似,而当它们不同时,只是因为使用了更多的 OOP 方法,因此 Java 知识将帮助我填补这个漏洞。如果 F# 能够使用与 C# 相同的资源,而无需学习 C# 语法我真的会考虑.. 值得尝试吗?
除此之外,亚马逊上的 F# 书籍(主要是 O'Reilly 的一本书和 Apress 的 3-4 本书)是否适合学习高级技术?因为现在我很喜欢函数式编程,但从来没有在.NET平台上工作过,所以我真的不知道从哪里开始。
提前致谢
【问题讨论】:
-
如果您已经了解 Java,那么学习 C# 语法应该不会太难。有关 F# 中的 GUI 编程的信息,请参阅这篇文章stackoverflow.com/questions/2796272/…
-
我不想仅仅因为我发现了函数式编程而选择 C#,并且我想从这个角度深入研究 .NET..
-
我理解并赞同你的观点,我相信你会喜欢 F#(它实际上是基于 OCaml,甚至还有 OCaml 兼容模式)。但我只想指出,C# 支持完全闭包和一阶函数,即使在那里也可以以非常实用的风格进行编程。这样做时我唯一想念的就是类型推断。
-
我不同意 C# 函数式编程中唯一缺少的就是类型推断。 C# 缺少可组合的类型系统(即委托是名义上的类型,而不是像 F# 函数类型那样的结构类型), void 在 C# 中不是合适的类型,并且 C# 将语句和表达式分开,这在以 FP 风格编程时会咬你.此外,C# 缺少具有复制和更新语义以及联合类型的记录,这在函数式编程中也很重要。 Tomas 的书很好地解释了为什么这些事情很重要:manning.com/petricek
-
而且,虽然不是严格意义上的 FP,但 C# 缺乏模式匹配是一个巨大的失望。