NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

谈谈vue面试那些题

bb_xiaxia1998

Vue

vue2项目搭建-使用VUE CLI3.0搭建项目vue2+scss+element简易版

肥晨

脚手架 11月月更 vue2项目搭建

【LeetCode】验证栈序列Java题解

Albert

算法 LeetCode 11月月更

EMQ荣获“2022中国移动创客马拉松OneOS物联网专题赛”三等奖

EMQ映云科技

物联网 IoT emqx 云边协同 车路协同

那些年面挂的js手写题

helloworld1024fd

JavaScript

从延迟处理讲起,JavaScript 也能惰性编程?

掘金安东尼

前端 11月月更

vue面试之Composition-API响应式包装对象原理

bb_xiaxia1998

Vue

vue这些原理你都知道吗?(面试版)

bb_xiaxia1998

Vue

如何准备好一场vue面试

bb_xiaxia1998

Vue

梁胜博士:软件供应链安全两手抓,既要安全左移也要全链路防护丨活动回顾

SEAL安全

DevOps DevSecOps 软件供应链 安全左移 软件供应链安全

从零手写react-router

helloworld1024fd

JavaScript

AI 模型编译器 MegCC 开源,解决推理引擎体积问题

MegEngineBot

深度学习 开源 MegEngine MegCC AI 模型编译器

我把分布式音乐播放器适配了Stage模型

OpenHarmony开发者

OpenHarmony

专业移动办公解决方案!远程控制软件RayLink内测火热进行中!

RayLink远程工具

远程控制软件 远程办公软件 远控软件 远程桌面连接 RayLink

React生命周期深度完全解读

夏天的味道123

React

什么是 HTML 语义化,有什么好处

肥晨

11月月更 HTML语义化 语义化标签

react hook 源码完全解读

flyzz177

React

从零开始实现一个Promise

helloworld1024fd

JavaScript

为何大企业都纷纷选择低代码做数字化转型?

优秀

数字化 低代码开发

React源码中的dom-diff

夏天的味道123

React

docker-compose下的java应用启动顺序两部曲之一:问题分析

程序员欣宸

Java Docker Docker-compose 11月月更

2022年中国汽车OTA行业发展洞察

易观分析

汽车 OTA

安防小间距LED显示屏的解决方案是什么

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

一文总结JavaScript手写面试题

helloworld1024fd

JavaScript

9个GaussDB常用的对象语句

华为云开发者联盟

数据库 后端 华为云 企业号十月 PK 榜

React源码解读之更新的创建

flyzz177

React

分享10个降低PCB成本的技巧!可收藏

华秋PCB

PCB PCB打样 PCB设计

现在加入写作社区,惊喜等你开启!

InfoQ写作社区官方

热门活动

React源码解读之任务调度

flyzz177

React

【GitHub60K+Star】12W字Java后端技术总结,助力2023年春招

程序知音

程序员 java面试 面试技巧 后端技术 Java面试八股文

深入浅出文件系统新形态

焱融科技

云计算 高性能 文件存储

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