Примеры метапрограммирования в F #

Мне интересны примеры метапрограммирования, написанные на F #, которые демонстрируют использование функциональных возможностей F #, таких как функция TryGetReflectedDefinition в Стандартная библиотека F #.

Где можно найти такие примеры?

Ответ 1

WebSharper и Unquote - два примеры библиотек F # с открытым исходным кодом, использующих Quotations (Unquote не использует специально TryGetReflectedDefinition, но я считаю, что это делает WebSharper).

FSharp.PowerPack.Linq - еще один пример. Кроме того, я нашел реализацию цитат в компиляторе F # в качестве полезной и проницательной справки.

Ответ 2

Некоторое время назад я написал проект, который преобразует котировки F # в код графического процессора, используя MSR Accelerator.

Это довольно простой переводчик (сравните, например, с WebSharper, который довольно сложный), но он должен продемонстрировать большинство интересующих вас функций. В частности, он переводит функции, помеченные атрибутом ReflectedDefinition. Это также из вашего любимого научного вычислительного домена: -)