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

soc*_*soc 8 database f# language-design type-providers

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

从语言实现的角度来看,为语言添加这样的功能有什么必要?

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

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

Tom*_*cek 14

从技术上讲,您可以将F#类型提供程序视为编译器的"插件".编译器询问类型提供程序"您知道哪些类型?"而不是生成映射.或者"你知道这种类型吗?" (取决于具体情况).

插件(类型提供者)回答并指定类型的样子(抽象地,不实际生成它).然后编译器使用此信息,然后要求类型提供程序提供在编译使用这些"假"类型的代码时应使用的代码.实际上也可以生成代码(有些样本会这样做,因为它们只使用已经存在的工具).

所以是的,您可以实现自己的类型提供程序.我说,在一个关于它的一些东西GOTO哥本哈根谈话记录和Don赛姆说,在他的早期谈判的几件事(我没有看到他的BUILD谈话还).