F#:没有UI(比如WPF)吗?

时间:2009-06-28 11:41:22

标签: wpf f#

我最近在F#上看过一些视频。它似乎主要用于服务或类?我在VS2010 Beta中看不到“F#WPF”应用程序?

7 个答案:

答案 0 :(得分:35)

F#实际上有一些非常好的构造用于创建事件驱动的UI应用程序,例如First Class EventsObject Expressions,从构造函数中调用属性setter,例如:

new Form(Text="My Window Title", Width=600, Height=400)

等等。

但是,在VS中创建表单设计器会为您的语言重新启动CodeDom。只要您的语言完全像C#或VB一样,当前CodeDom架构的效果很好;它不适合生成F#代码(这来自我现在无法找到的网络广播或采访)。它还需要部分类,如果我没记错的话,在Beta 1的语言中不支持。在第一版中,F#团队不是专注于设计师支持,而是决定将他们的资源用于增强语言的其他部分,如异步和并行编程等。

这意味着您在F#中创建UI至少有4种选择:

  • 手动编写所有UI代码,这对于简单的应用程序来说很好;
  • 创建F#代码作为库来处理“硬件”,如异步和并行代码,或以计算为中心的代码,并从C#/ VB调用它;
  • 将您的UI代码创建为C#/ VB库,并从F#驱动它并将事件处理委托给F#;或
  • 使用DSLComputation Expression (monad)简化手动构建UI(在此答案中寻找其他链接时发现了这一点)。

其中,从F#调用C#UI库可能是最灵活的,同时仍保留熟悉的范例。但是,使用计算表达式手动快速构建UI当然值得一看。

答案 1 :(得分:13)

你当然可以在F#中创建GUI - 毕竟它只是另一种.NET语言。

Tomas Petricek的书Functional Programming for the Real World(我稍微帮助了一下)有各种GUI示例。如果您想查看示例,可以下载source code

不可否认,GUI编程的某些方面并没有将非常映射到功能样式,因为涉及到很多变异,但是有方法和手段:)

答案 2 :(得分:13)

使用F#3.0和XAML type provider,可以在Visual Studio 11中为F#创建WPF设计器。请参阅http://www.navision-blog.de/2012/03/22/wpf-designer-for-f/

答案 3 :(得分:5)

我们销售一个名为F# for Visualization的商业图书馆,该库以100%F#代码编写,并使用WPF从您的F#代码中提供带排版数学的交互式图形:

alt text
(来源:ffconsultancy.com

因此,使用WPF在F#中编写GUI应用程序当然是可能的。

答案 4 :(得分:4)

它是一种.NET语言,因此它可以使用.NET类库。这意味着Winforms,WPF或您可能在C#中使用的任何其他内容。

答案 5 :(得分:2)

根据James Hugard的链接更新

现在,F#不会用于GUI,因为它不是最重要的用例。来自Don Syme's blog

  

在第一个支持的版本中,我们的目标必须是专注于F#的核心优势,以便使用F#Interactive进行探索性编程,使用数据编程并实现并行和异步组件。

虽然理论上可以使用F#和标准GUI库,但如果需要GUI,则应使用VB或C#:

  

F#用户应使用Visual Studio设计器工具生成C#或Visual Basic代码,并将这些组件合并到其F#应用程序中。

根据Syme的说法,从长远来看,“生成F#代码的面向表示的设计器工具”是“绝对可行的”。

答案 6 :(得分:1)

当然,您也可以使用F#中的所有WPF类。您可以使用F#创建Windows,控件和其他所有内容,有时我也可以在F#控制台中使用它。

它还没有像C#或VB那样紧密集成到Visual Studio中,但正如您在评论中所看到的,未来的设计人员支持是可行的。我想我们必须等到那时(或使用其他工具)。