【发布时间】:2009-06-28 11:41:22
【问题描述】:
我最近在 F# 上看到了一些视频。它似乎主要用于服务或类?我在 VS2010 Beta 中没有看到“F# WPF”应用程序?
【问题讨论】:
我最近在 F# 上看到了一些视频。它似乎主要用于服务或类?我在 VS2010 Beta 中没有看到“F# WPF”应用程序?
【问题讨论】:
F# 实际上有一些非常好的构造用于创建事件驱动的 UI 应用程序,例如 First Class Events、Object Expressions,从构造函数调用属性设置器,例如:
new Form(Text="My Window Title", Width=600, Height=400),
还有很多其他的。
但是,在 VS 中创建 表单设计器 需要为您的语言提供 CodeDom。当前的 CodeDom 架构运行良好,只要您的语言看起来完全像 C# 或 VB;它不适合生成 F# 代码(这是来自我现在无法找到的网络广播或采访)。它还需要部分类,如果我没记错的话,从 Beta 1 开始,语言不支持这些类。F# 团队决定将资源用于增强语言的其他部分,而不是专注于第一个版本中的设计器支持,比如异步和并行编程等。
这意味着在 F# 中创建 UI 时至少有 4 种选择:
其中,从 F# 调用 C# UI 库可能是最灵活的,同时仍保留熟悉的范例。但是,使用计算表达式手动快速构建 UI 确实值得一看。
【讨论】:
使用 F# 3.0 和 XAML type provider,可以在 Visual Studio 11 中为 F# 创建 WPF 设计器。请参阅 http://www.navision-blog.de/2012/03/22/wpf-designer-for-f/
【讨论】:
您当然可以在 F# 中创建 GUI - 毕竟它只是另一种 .NET 语言。
Tomas Petricek 的书,Functional Programming for the Real World(我提供了一些帮助)有各种 GUI 示例。如果您想查看示例,可以下载source code。
诚然,GUI 编程的某些方面非常不能很好地映射到函数式风格,因为其中涉及到很多变化,但有一些方法和手段可以解决这个问题:)
【讨论】:
我们出售一个名为 F# for Visualization 的商业库,它是用 100% F# 代码编写的,并使用 WPF 来提供交互式图形以及来自您的 F# 代码的排版数学:
(来源:ffconsultancy.com)
所以当然可以使用 WPF 在 F# 中编写 GUI 应用程序。
【讨论】:
它是一种 .NET 语言,因此可以使用 .NET 类库。这意味着 Winforms、WPF 或您可能在 C# 中使用的任何其他东西。
【讨论】:
根据 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# 代码的面向演示的设计器工具”“绝对可行”。
【讨论】:
当然,您也可以使用 F# 中的所有 WPF 类。您可以从 F# 创建 Windows、控件和其他所有内容,我有时也从 F# 控制台使用它。
它还没有像 C# 或 VB 那样紧密集成到 Visual Studio 中,但正如您在 cmets 中看到的那样,未来的设计器支持是可行的。我想我们必须等到那时(或使用其他工具)。
【讨论】: