F#对于.NET Windows开发来说是可用的编程语言吗?

10

我一直听说 F# 和微软有关。现在他们在 Redmond 有一个人正在博客和编码。我想知道是否可以从 F# 编写 GUI 代码 (例如,添加按钮到表单并订阅 onclick 事件的示例)。

F# 是否可以完全访问 .Net?

我很好奇,虽然我知道可以通过谷歌了解相关信息,但我更愿意听听真正使用该语言的人的意见。

5个回答

16

当然可以编写WinForms应用程序 - 但你不会覆盖OnClick方法,而是订阅Click事件。

是的,F#完全可以访问.NET,但如果使用大量可变类型,您将无法获得非常惯用的函数式代码。

Tomáš Petříček的F#网站提供了他的书中的示例源代码(免责声明:我也参与了该书,所以我显然有偏见),其中包含WinForms示例。


谢谢Jon,你的文章真的很好,介绍了F#的各种应用,并且是关于函数式编程的一个不错的入门。我特别喜欢与C#的比较。干杯,伙计 ;) - Spence
Jon Skeet不仅拥有卓越的声誉,而且还参与了一本书的编写。你真是一个充满激情的人。我向你致敬。 - Thomas Owens

4

3
但正如Jon Skeet所说,Tomas有一些有趣的例子(特别是过滤/管道事件),这表明我怀疑可能是一个很好的交叉点,即使用设计师设计您的C# GUI,然后使用F#编写智能部分,并使用事件将其连接起来。

我认为这是一个非常好的方法。在没有WinForms设计器的情况下设计复杂的GUI有点麻烦(尽管在WPF中的差异并不大 - F#不支持WPF设计器,但您在那里不会失去太多东西)。

无论如何,敬请关注更多示例:-)。使用声明式事件处理(Event.filter、Event.map和friends)非常好,但在某些情况下并不完全是您想要的。我正在撰写一章关于此事,我认为F#提供了一些真正令人惊叹的处理GUI的方法 - 源代码将在书籍网站上免费提供,并且一旦完成书籍,我也希望为我的博客写一些简短的介绍。


谢谢你的回复Tomas。我一直在阅读你在MSDN的博客。不过我没想到你和Jon Skeet也有关联。这个世界太小了... - Spence

1

我实际上并没有使用过F#,只是阅读了规范。它可能非常适合WinForms开发,但我对此的直接反应是“这并不重要”。只要您使用符合CLR的编译器,您就应该能够将F#程序集与其他用C#/IronPython等编写的程序集混合使用。

是的,F#可以使用.NET Framework,并且F#程序集可以被其他.NET程序集使用。

我的建议是在F#中编写您的函数库,然后使用任何您喜欢的.NET语言编写客户端应用程序。


这就是我想到的,但如果你不能用它来做你需要的一切,那语言有什么用呢?另一个问题是目前的编译器不支持在同一个程序集中使用多种语言,所以根据你在代码中做什么,性能可能会受到影响。 - Spence
@Spence,如果你所说的是真的,那么就只会有一种编程语言了。但不同的编程语言有不同的目的、用途和优势。你肯定不会很快看到我用SQL编写操作系统。 - Benjol

1

你可以使用F#编写GUI代码,但我不确定你是否想这样做。如果你是那种在记事本中编写C# GUI的人,那么这可能不会困扰你。个人而言,我更喜欢设计师,但F#没有设计师,据我所知,也不会有设计师 - 这可能说明了F#的预期用途。

但正如Jon Skeet所说,Tomas有一些有趣的示例(特别是过滤/管道事件),展示了我认为可能是一个很好的交叉点,即使用设计师设计C# GUI,然后使用F#编写大脑,并通过事件将其连接到其他部分。


GUI 设计师是 C# 如此愉悦的设计体验的全部原因。 - Spence

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