Спасибо за ваш великолепный ответ, он заполнил многие пробелы в моем понимании цитат и дал мне путь вперед.

ратил несколько часов, пытаясь справиться с цитатами F #, но я наткнулся на некоторый блокпост. Мое требование состоит в том, чтобы взять простые функции (только целые числа, +, -, /, *) из различимого типа объединения и сгенерировать дерево выражений, которое в конечном итоге будет использоваться для генерации кода на языке Си. Я знаю, что это возможно, используя цитаты с «прямыми» функциями.

Моя проблема в том, что дерево выражений, похоже, оканчивается на «Значение», и я не могу понять, как перейти к этому значению.

Мои вопросы: возможно ли это в этой ситуации? или есть другие подходы, которые стоит рассмотреть.

type FuncType = 
| A of (int -> int -> int)
| B
| C

[<ReflectedDefinition>]
let add x y = x + y


let myFunc1 = A (fun x y -> x + y )
let myFunc2 = A add 

let thefunc expr = 
    match expr with
    | A(x) ->
        <@ x @>
    | _ ->
        failwith "fail"

printfn "%A" (thefunc myFunc1) // prints "Value (<fun:myFunc1@14>)"
printfn "%A" (thefunc myFunc2) // prints "Value (<fun:myFunc2@15>)"
printfn "%A" <@ fun x y -> x + y @> // generates usable expression tree

Ответы на вопрос(1)

Ваш ответ на вопрос