Цитаты кода F #: могу ли я определить свой конкретный и абстрактный синтаксис? - PullRequest
0 голосов
/ 11 февраля 2020

В Haskell Я могу использовать квазиквотер для создания пользовательского AST, используя конкретный синтаксис, определенный пользовательским анализатором, как описано здесь: https://wiki.haskell.org/Quasiquotation

Возможно ли это в F #?

1 Ответ

4 голосов
/ 11 февраля 2020

Самая близкая вещь, о которой я могу подумать, это F # TypeProviders. Он позволяет коду провайдера быть частью конвейера компилятора и создает типы для внедрения.

Например, есть провайдер типа XML:

type Author = XmlProvider<"""<author name="Paul Feyerabend" born="1924" />""">
let sample = Author.Parse("""<author name="Karl Popper" born="1902" />""")

printfn "%s (%d)" sample.Name sample.Born

Подробнее см. FSharp.Data project .

...