写点什么

为 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:421745
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

2023年免费堡垒机软件推荐-行云管家堡垒机免费版

行云管家

网络安全 堡垒机

chatGPT衣食住行10种场景系列教程(01)chatGPT热点事件汇总+开发利器

非喵鱼

java openai AIGC ChatGPT 三周年连更

火山引擎DataTester 3大功能升级:聚焦敏捷、智能与易用,帮助企业降本增效

字节跳动数据平台

大数据 AB testing实战 A/B 测试 对比实验

全平台数据(数据库)管理工具 DataCap 管理 Rainbond 上的所有数据库

北京好雨科技有限公司

数据库 Kubernetes 云原生 rainbond 企业号 4 月 PK 榜

Karmada 多云容器编排引擎支持多调度组,助力成本优化

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

迁移PD坑-cdc任务全部stop

TiDB 社区干货传送门

实践案例 集群管理 故障排查/诊断

TiDB迁移、升级与案例分享(TiDB v4.0.11 → v6.5.1)

TiDB 社区干货传送门

迁移 版本升级 安装 & 部署 扩/缩容 6.x 实践

一次「找回」TraceId的问题分析与过程思考

Java 中间件 raceId

python正则 | python小知识

AIWeker

Python python小知识 三周年连更

新特性解析丨TiDB 资源管控的设计思路与场景解析

TiDB 社区干货传送门

版本测评

膜拜!华为内部都在强推的783页大数据处理系统:Hadoop源代码

Java 大数据 hadoop

Mysql 连接查询

WordPress 使用 TiDB Cloud 替换 MySQL

TiDB 社区干货传送门

迁移 实践案例 版本测评 应用适配

【Linux】之创建普通用户并禁止root用户远程登陆

A-刘晨阳

Linux 三周年连更 用户名

ChatGPT 真能带货吗?晒一下 SQL Chat 上线 3 周以来的真实运营数据📊

Bytebase

MySQL sql postgres ChatGPT SQL Server

阿里P8推荐学习的44个微服务架构设计模式,真的太香了!

Java 架构 微服务 设计模式

用数据分析的方法去做dba,维护好tidb数据库。

TiDB 社区干货传送门

6.x 实践

迁移prometheus数据

TiDB 社区干货传送门

迁移 实践案例 集群管理

tidb-loadbalance 客户端方式软负载均衡配置实践

TiDB 社区干货传送门

数据库架构设计 数据库连接

maya软件在建模上有什么优势?

Finovy Cloud

maya 3D软件

HummerRisk V1.0 开发手册(微服务版)

HummerCloud

开源 微服务 云原生安全

别再说你不懂Java内存模型了!!!

Java 内存模型 JMM 并发

零样本文本分类应用:基于UTC的医疗意图多分类,打通数据标注-模型训练-模型调优-预测部署全流程。

汀丶人工智能

人工智能 自然语言处理 深度学习 文本分类 小样本学习

谷歌 Chrome 正式发布 WebGPU!Orillusion开源倒计时!

Orillusion

开源 WebGL 元宇宙 web3d #WebGPU

等级保护5个级别详细说明-行云管家

行云管家

网络安全 等保 等级保护

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