ter*_*tyl 39 f# type-providers
在观看Don Symes的pdc视频后,我不太了解类型提供商 http://player.microsoftpdc.com/Session/04092962-4ed1-42c6-be07-203d42115274
我是否正确理解这一点.你可以为Twitter,Excel提供现成的类型提供者......
如果我有自定义Xml结构,我是否需要为此实现自己的类型提供程序,这与创建自己的自定义映射器有何不同?
Bri*_*ian 40
假设您在世界上有一些任意数据实体.对于这个例子,假设它是一个电子表格.
我们还说你可以通过某种方式获取/推断该数据的模式/元数据 - 也就是说,你可以知道类型(例如双重与字符串)和关系(例如此列意味着"薪水")和元数据(例如,此表单用于2009年6月的预算).
类型提供程序允许您编写一种"填充库",它知道某种数据实体(例如电子表格)并将该库用作编译器/ IDE工具链的一部分,以便您可以编写类似的代码
mySpreadsheet.ByRowAndColumn.C4
Run Code Online (Sandbox Code Playgroud)
或其他东西,并获得智能感知(自动完成)和工具提示(例如将单元格C4描述为鲍勃的薪水)和静态类型(例如,它是一个双重字符串或字符串或其他任何东西).从本质上讲,这为您提供了静态类型对象模型的工具可用性,以及各种动态或代码生成系统的易用性,并对两者进行了一些改进.'成本'是有人必须编写填充库('类型提供者'),但许多这样的提供者是非常通用的(例如,说OData或Excel或WMI或诸如此类的东西),因此少数类型提供者库通过静态类型和一流的工具支持,可以在您的编程语言中提供大量的世界数据.
该体系结构是一个开放的编译器,其中provider-authors实现了一个小接口,允许它们在编程上下文中注入新的名称/类型.类型提供程序可能只是您传递给编译器的另一个库(项目中的引用,-r
-ed),具有额外的元数据,将其标记为参与编译/ IDE/codegen开发部分的类型提供程序.
我不知道你的xml示例中的"自定义映射器"究竟是什么来绘制比较.
我知道这是一个老问题,但现在可以使用Type提供程序(因为F#3.0已经发布).还有一份白皮书也在解释它.我们有一个来自微软的代码,可以让你深入了解.
http://www.infoq.com/news/2012/09/fsharp-type-providers
类型提供程序使用F#的引用作为(有效)编译器插件,可以在编译时基于元数据生成代码.
这允许您(例如)读入一些JSON,或数据库模式,或某些XSD或其他任何内容,然后生成F#类来模拟元数据所代表的域.
在创建它们方面,我写了一些博客文章,可能会从Ground Up的Type Providers开始.
归档时间: |
|
查看次数: |
8448 次 |
最近记录: |