database - 从语言实现的角度来看,实现 F# 3.0 中的类型提供程序需要什么?

标签 database f# language-design type-providers

F# 3.0 添加了 type providers ,这基本上不需要手动编写或生成数据库(或其他数据提供者)与语言/类型系统之间的映射,因为语言可以直接使用类型提供者从数据库本身查询结构信息。

从语言实现的角度来看,将这样的功能添加到语言中需要什么?

是否需要完全可插拔的类型系统?或者它更像是一些集成到编译器中的隐藏代码生成器?

为 F# 实现新的类型提供程序需要什么?

最佳答案

从技术上讲,您可以将 F# 类型提供程序视为编译器的“插件”。编译器不生成映射,而是询问类型提供者“你知道什么类型?”或者“你知道这种类型吗?” (取决于上下文)。

插件(类型提供者)回答并指定类型的外观(抽象地,没有实际生成它)。编译器然后使用此信息,稍后要求类型提供者提供在编译使用这些“假”类型的代码时应使用的代码。也可以实际生成代码(一些示例会这样做,因为它们只是使用已经存在的工具)。

是的,您可以实现自己的类型提供程序。我在 GOTO Copenhagen talk 中说了一些关于它的事情这是recorded Don Syme 在他之前的演讲中说了一些话(我还没有看到他的 BUILD 演讲)。

关于database - 从语言实现的角度来看,实现 F# 3.0 中的类型提供程序需要什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7428490/

相关文章:

php - 从文本框提交 MySQL 查询?

iphone - 数据库设计困境

c# - 如何在 C# 代码中找到属性的来源?

调试 F# 代码和函数式风格

oop - 为什么 Rust 不支持特征对象向上转换?

node.js - 如何使用 websockets 监听 mongodb 中的更新

sql 查询将现有列条目转换为行标题

f# - 为什么 F# 无法像 C# 那样推断类型

c++ - 智能指针不能自动用作原始指针?

c - 以下 C char 数组存储实现背后的原因是什么?