我最近在F#上看过一些视频。它似乎主要用于服务或类?我在VS2010 Beta中看不到“F#WPF”应用程序?
答案 0 :(得分:35)
F#实际上有一些非常好的构造用于创建事件驱动的UI应用程序,例如First Class Events,Object Expressions,从构造函数中调用属性setter,例如:
new Form(Text="My Window Title", Width=600, Height=400)
,
等等。
但是,在VS中创建表单设计器会为您的语言重新启动CodeDom。只要您的语言完全像C#或VB一样,当前CodeDom架构的效果很好;它不适合生成F#代码(这来自我现在无法找到的网络广播或采访)。它还需要部分类,如果我没记错的话,在Beta 1的语言中不支持。在第一版中,F#团队不是专注于设计师支持,而是决定将他们的资源用于增强语言的其他部分,如异步和并行编程等。
这意味着您在F#中创建UI至少有4种选择:
其中,从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#代码中提供带排版数学的交互式图形:
(来源: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中,但正如您在评论中所看到的,未来的设计人员支持是可行的。我想我们必须等到那时(或使用其他工具)。