0 people like it.
Like the snippet!
Compiling quotations
Demonstrates how to compose code at run time using F# quotations (both typed and untyped) and how to compile and run/execute the quotation using F# Quotations Evaluator (based on F# 2.0 PowerPack code) from the F# Software Foundation. (Updated October 25, 2019)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
|
#r "FSharp.PowerPack.Linq.dll"
open Microsoft.FSharp.Quotations
open Microsoft.FSharp.Linq.QuotationEvaluation
// Create a part of expression using "Expr" calls
// (this creates arbitrary untyped quotation)
let expr = Expr.Value(13)
// Create a part using quotation syntax
// (splicing untyped part in using %%)
let expr2 = <@ (fun x -> x * %%expr) @>
// Compile the quotation & Run returned function
let f = expr2.Compile()()
f 10
|
namespace Microsoft
namespace Microsoft.FSharp
namespace Microsoft.FSharp.Quotations
namespace Microsoft.FSharp.Linq
val expr : Expr
Full name: Script.expr
Multiple items
type Expr =
override Equals : obj:obj -> bool
member GetFreeVars : unit -> seq<Var>
member Substitute : substitution:(Var -> Expr option) -> Expr
member ToString : full:bool -> string
member CustomAttributes : Expr list
member Type : Type
static member AddressOf : target:Expr -> Expr
static member AddressSet : target:Expr * value:Expr -> Expr
static member Application : functionExpr:Expr * argument:Expr -> Expr
static member Applications : functionExpr:Expr * arguments:Expr list list -> Expr
...
Full name: Microsoft.FSharp.Quotations.Expr
--------------------
type Expr<'T> =
inherit Expr
member Raw : Expr
Full name: Microsoft.FSharp.Quotations.Expr<_>
static member Expr.Value : value:'T -> Expr
static member Expr.Value : value:obj * expressionType:System.Type -> Expr
val expr2 : Expr<(int -> int)>
Full name: Script.expr2
val x : int
val f : (int -> obj)
Full name: Script.f
More information