コード引用符から値名を取得してSQLのパラメータにバインディングするO/Rマッパーの案

こんなO/Rマッパーがあったらどうだろう。

[<Test>]
let ``test`` () =
let name = "jhon"
let salary = 2000
let persons =
query<Person>
<@ let name = name in let salary = salary in "
select
*
from
person
where
name = /*name*/'a'
and
salary > /*salary*/0
"
@>
()

コード引用符中であれば、Microsoft.FSharp.Quotations.ExprShapeモジュールで値の名前がとれる。SQLはコード引用符に入れる必要はないが、含めると見た目としても、意味的にもおさまりがいい。SQLはもちろん2 Way(ツールにコピーして実行できるし、プログラムからも実行できる)。