Я считаю, что это должно быть возможно. Вам нужно будет ссылаться на FSharp.PowerPack.Linq.dll
, в котором добавлена поддержка перевода цитат F # (написанных с использованием <@ fun x -> x.Foo @>
) в деревья выражений C #. Нечто подобное должно сработать:
#r @"FSharp.PowerPack.Linq.dll"
open System
open System.Linq.Expressions
open Microsoft.FSharp.Linq.QuotationEvaluation
let e = <@ Func<int, int>(fun x -> 1 + x) @>
let lambda = e.ToLinqExpression() :?> LambdaExpression
Обратите внимание, что в кавычке создается делегат Func<...>
, который преобразуется в дерево выражений, которое можно преобразовать в LambdaExpression
(обычные функции F # представлены по-разному).