Подтвердить что ты не робот

F #, как они работают

Я не совсем получаю провайдеров типов после просмотра видеоролика Don Symes pdc http://player.microsoftpdc.com/Session/04092962-4ed1-42c6-be07-203d42115274

Я правильно понимаю это. Вы можете получить готовые поставщики типов для Twitter, Excel...

Что делать, если у меня есть настраиваемая структура Xml, мне нужно реализовать для этого свой собственный провайдер типов и как это отличается от создания моего собственного настраиваемого модуля отображения?

4b9b3361

Ответ 1

Предположим, что у вас есть какой-то произвольный объект данных в мире. В этом примере предположим, что это электронная таблица.

Предположим также, что у вас есть способ получить/вывести схему/метаданные для этих данных - то есть вы можете знать типы (например, double versus string) и отношения (например, этот столбец означает "зарплата" ) и метаданные (например, это лист предназначен для бюджета в июне 2009 года).

Поставщики типов позволяют вам кодировать некоторую "библиотеку прокладки", которая знает о каком-то объекте данных (например, электронную таблицу) и использует эту библиотеку как часть инструментальной цепочки компилятора /IDE, чтобы вы могли писать код, например

mySpreadsheet.ByRowAndColumn.C4

или что-то еще, и получить Intellisense (автозаполнение) и всплывающие подсказки (например, описать ячейку C4 в качестве зарплаты для Боба) и статическую типизацию (например, будь то двойная или строка или что-то еще). По сути, это дает вам возможность использования статически типизированных объектных моделей с простотой использования различных динамических систем или систем генерации кода с некоторыми улучшениями для обоих. "Стоимость" заключается в том, что кто-то должен написать библиотеку прокладки ( "поставщик типа" ), но многие из таких поставщиков очень общие (например, тот, который говорит OData или Excel или WMI или еще что-то), и поэтому небольшая группа библиотек поставщиков типов предоставляет огромное количество мировых данных на вашем языке программирования со статической типизацией и поддержкой первоклассного инструментария.

Архитектура является открытым компилятором, где провайдеры-провайдеры реализуют небольшой интерфейс, который позволяет им вводить новые имена/типы в контекст программирования. Поставщиком типа может быть только другая библиотека, которую вы передаете компилятору (ссылка в вашем проекте, -r -ed), с дополнительными метаданными, которые маркируют его как поставщика типов, который участвует в частях разработки компиляции /IDE/codegen.

Я не знаю точно, что "пользовательский сопоставитель" находится в вашем примере xml, чтобы провести сравнение.

Ответ 2

Я понимаю, что это старый вопрос, но теперь доступны поставщики Type (как выпущен F # 3.0). Есть и белая бумага, объясняющая это. И у нас есть код от Microsoft, который позволяет вам видеть под капотом.

http://www.infoq.com/news/2012/09/fsharp-type-providers

Ответ 3

Поставщики типов используют котировки F #, чтобы действовать как (эффективно) плагины компилятора, которые могут генерировать код на основе метаданных во время компиляции.

Это позволяет вам (например) читать некоторые JSON или схему базы данных или некоторые XSD или что угодно, а затем генерировать классы F # для моделирования домена, который представляют метаданные.

С точки зрения их создания, я написал несколько сообщений в блогах, которые могут представлять интерес, начиная с Тип провайдеров с нуля.