Примеры метапрограммирования в F #
Мне интересны примеры метапрограммирования, написанные на F #, которые демонстрируют использование функциональных возможностей F #, таких как функция TryGetReflectedDefinition
в Стандартная библиотека F #.
Где можно найти такие примеры?
Ответы
Ответ 1
WebSharper и Unquote - два примеры библиотек F # с открытым исходным кодом, использующих Quotations (Unquote не использует специально TryGetReflectedDefinition
, но я считаю, что это делает WebSharper).
FSharp.PowerPack.Linq - еще один пример. Кроме того, я нашел реализацию цитат в компиляторе F # в качестве полезной и проницательной справки.
Ответ 2
Некоторое время назад я написал проект, который преобразует котировки F # в код графического процессора, используя MSR Accelerator.
Это довольно простой переводчик (сравните, например, с WebSharper, который довольно сложный), но он должен продемонстрировать большинство интересующих вас функций. В частности, он переводит функции, помеченные атрибутом ReflectedDefinition
. Это также из вашего любимого научного вычислительного домена: -)