コード引用符を使ったプロパティ名の取得

コード引用符<@ @>を使うことで式を取得できます。C#のExpression>で受けるのと同じようなものでしょうか。
なんかおもしろいことができそうな気がします。

Personレコードをのプロパティを指定してその名前を取得するコードを書いてみました。

open Microsoft.FSharp.Quotations
open Microsoft.FSharp.Quotations.Patterns
open NUnit.Framework

type Person =
{ FirstName:string;
LastName:string;
Age:Option<int> }

let PersonProto =
{ Person.FirstName = "";
LastName = "";
Age = None }

let convert exprList =
let resolve (expr : Expr) =
match expr with
| PropertyGet(_, property, _) ->
property.Name
| _ -> invalidOp "%A is not property."
List.map resolve exprList

[<Test>]
let ``test expr``() =
let exprList : Expr list =
[ <@ PersonProto.FirstName @>;
<@ PersonProto.LastName @>;
<@ PersonProto.Age @> ]

let resultList = convert exprList

Assert.AreEqual(["FirstName"; "LastName"; "Age"], resultList)