写点什么

为 F#构建类型提供器(Type Provider)

  • 2012-12-31
  • 本文字数:722 字

    阅读完需:约 2 分钟

类型提供器(Type Provider)是 F#的一个有趣的特性。从开发者的角度看,它们和任何静态定义类型一样。但它们并非来自 CLR 程序集中的元数据,而是由在设计时执行的代码根据需要创建的。类型提供器可以从任何源创建,不过数据库和 REST,或者 OData 风格的 Web 服务是最常见的选择。

在 2011 年的一篇文章中,Ivan Towlson 演示了开发者如何在不考虑外部服务的代码中创建类型提供器来减少样板代码。他在例子中创建了可变长度的向量类型和适用于同种向量的通用操作。

后来他和其他人的工作都移到了 FSharpx 项目中。该项目中有 9 组类型提供器,既可以直接使用,也可以将其当作灵感的源泉来创建自己的类型提供器。

  • FSharpx.TypeProviders.AppSettings
  • FSharpx.TypeProviders.Documents
  • FSharpx.TypeProviders.Excel
  • FSharpx.TypeProviders.Freebase
  • FSharpx.TypeProviders.Graph
  • FSharpx.TypeProviders.Machine
  • FSharpx.TypeProviders.Math
  • FSharpx.TypeProviders.Regex
  • FSharpx.TypeProviders.Xaml

FSharpx 是基于 Apache 2.0 许可证提供的开源项目。

Blue Mountain 为依赖 R 这种统计分析语言的人提供了 F# R 类型提供器。该类型提供器也是以开源项目的形式提供的,采用了一种非标准但非常宽松的许可证

关于F#类型提供器的更多信息,请看Joe Pamer 的视频 The Future of F#:Type Providers 以及微软研究院的论文《 F#3.0——Strongly-Typed Language Support for Internet-Scale Information Sources 》。

看一下其他提供类似功能的语言可能也会有所裨益。 Gosu 就是一种这样的语言,它基于 JVM,使用了所谓的开放类型系统(Open Type System)。Cédric Beust对开放类型系统的介绍就很不错,提供了很多深度讨论的链接信息。

参考英文原文 Building Type Providers for F#

2012-12-31 03:421766
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 151.0 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

面试官:什么是字节码?它最大的优势是什么?

田维常

后端

架构师训练营第六周总结

邓昀垚

极客大学架构师训练营

央行数字货币亮相 吹皱一池春水

CECBC

数字货币 银行

快速掌握并发编程---线程阻塞与唤醒

田维常

并发编程

快速掌握并发编程---深入学习Condition

田维常

并发编程

合约交易所系统开发技术搭建

薇電13242772558

区块链

快速掌握并发编程---深入了解volatile

田维常

后端

快速掌握并发编程---Semaphore原理和实战

田维常

并发编程

科大讯飞翻译系统变身“随身翻译官” 助力粤港澳大湾区一体化建设

Talk A.I.

面试官:JDK、JRE、JVM 三者什么关系?

田维常

后端

快速掌握并发编程---synchronized篇(上)

田维常

并发编程

十八般武艺玩转GaussDB(DWS)性能调优(三):好味道表定义

华为云开发者联盟

数据 分布式存储

真爽!蚂蚁金服大牛整理SpringBoot+Cloud离线版

996小迁

架构 面试 springboot SpringCloud

这10道 Spring 常见面试题,你能搞定吗?

田维常

面试

架构师训练营第六周作业

邓昀垚

极客大学架构师训练营

快速掌握并发编程---Thread常用方法

田维常

后端

快速掌握并发编程---CountDownLatch原理和实战

田维常

并发编程

容器、Docker、虚拟机,别再傻傻分不清

华为云开发者联盟

容器 虚拟化

OPPO安全重磅出击 剑指安全与隐私保护

OPPO安全

安全 隐私保护 个人隐私安全 OPPO安全

快速掌握并发编程---基础篇

田维常

并发编程

快速掌握并发编程---ArrayBlockingQueue 底层原理和实战

田维常

并发编程

精解四大集合框架:List核心知识总结

田维常

后端

笔试题:代码如何实现“百钱买百鸡”?

田维常

面试

MySQL数据库开发中的6个“避免”

田维常

MySQL

快速掌握并发编程---synchronized篇(下)

田维常

并发编程

大企程序员亲身经历告诉你,CRM系统,自己的才是最好的

Philips

敏捷开发

LeetCode题解:90. 子集 II,递归+for循环+回溯,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

面试官:什么是面向对象?

田维常

后端

笔试题:了解穷举算法吗?如何用代码实现

田维常

后端

快速掌握并发编程---细说ReentrantLock和AQS

田维常

后端

企业CRM未来发展趋势展望

Learun

敏捷开发

为F#构建类型提供器(Type Provider)_语言 & 开发_Jonathan Allen_InfoQ精选文章