F#には、System.Linq.Expressionインスタンスを返す関数があります。
and System.Object with
member this.ToExpression() =
match this with
| :? System.Int32 -> Expression.Constant(this) :> Expression
| :? System.Boolean -> Expression.Constant(this) :> Expression
| :? Tml.Runtime.Seq as s -> s.ToExpression()
| _ -> failwith "bad expression"
戻り値の型強制を省略すると、F#は関数の戻り型をConstantExpressionに推測します。私の最初の考えは、戻り型を#Expressionとして明示的にマークすることでしたが、それは機能しませんでした。リターン型を最も一般的な型に手動でキャストすることを伴わない、これを行うためのより洗練された方法はありますか?
ありがとう。
編集:答えてくれた皆さんに感謝します。明示的なリターンタイプ+アップキャストシナリオを使用します。