我一直听说 F# 和微软有关。现在他们在 Redmond 有一个人正在博客和编码。我想知道是否可以从 F# 编写 GUI 代码 (例如,添加按钮到表单并订阅 onclick 事件的示例)。
F# 是否可以完全访问 .Net?
我很好奇,虽然我知道可以通过谷歌了解相关信息,但我更愿意听听真正使用该语言的人的意见。
我一直听说 F# 和微软有关。现在他们在 Redmond 有一个人正在博客和编码。我想知道是否可以从 F# 编写 GUI 代码 (例如,添加按钮到表单并订阅 onclick 事件的示例)。
F# 是否可以完全访问 .Net?
我很好奇,虽然我知道可以通过谷歌了解相关信息,但我更愿意听听真正使用该语言的人的意见。
当然可以编写WinForms应用程序 - 但你不会覆盖OnClick方法,而是订阅Click事件。
是的,F#完全可以访问.NET,但如果使用大量可变类型,您将无法获得非常惯用的函数式代码。
Tomáš Petříček的F#网站提供了他的书中的示例源代码(免责声明:我也参与了该书,所以我显然有偏见),其中包含WinForms示例。
我认为这是一个非常好的方法。在没有WinForms设计器的情况下设计复杂的GUI有点麻烦(尽管在WPF中的差异并不大 - F#不支持WPF设计器,但您在那里不会失去太多东西)。
无论如何,敬请关注更多示例:-)。使用声明式事件处理(Event.filter、Event.map和friends)非常好,但在某些情况下并不完全是您想要的。我正在撰写一章关于此事,我认为F#提供了一些真正令人惊叹的处理GUI的方法 - 源代码将在书籍网站上免费提供,并且一旦完成书籍,我也希望为我的博客写一些简短的介绍。
我实际上并没有使用过F#,只是阅读了规范。它可能非常适合WinForms开发,但我对此的直接反应是“这并不重要”。只要您使用符合CLR的编译器,您就应该能够将F#程序集与其他用C#/IronPython等编写的程序集混合使用。
是的,F#可以使用.NET Framework,并且F#程序集可以被其他.NET程序集使用。
我的建议是在F#中编写您的函数库,然后使用任何您喜欢的.NET语言编写客户端应用程序。
你可以使用F#编写GUI代码,但我不确定你是否想这样做。如果你是那种在记事本中编写C# GUI的人,那么这可能不会困扰你。个人而言,我更喜欢设计师,但F#没有设计师,据我所知,也不会有设计师 - 这可能说明了F#的预期用途。
但正如Jon Skeet所说,Tomas有一些有趣的示例(特别是过滤/管道事件),展示了我认为可能是一个很好的交叉点,即使用设计师设计C# GUI,然后使用F#编写大脑,并通过事件将其连接到其他部分。