[Home] Module Microsoft.FSharp.Quotations.Raw


Quoted expressions and operations related to them. These expressions trees are dynamically annoated with type information which is dynamically checked for consistency.

Types

TypeDescription
type ctorSpec Specificaton of the data carried by a efCtorCall constructed term
type expr Quoted expressions annotated decorated with [[RawTypes.dtype]] type specifications. A quoted expression can be decomposed using the Query functions on the expression families defined in this module. efVar, efApp, efLambda, efConst, efQuote and efHole form a complete non-overlapping decomposition of the type of quoted expressions.
type exprConstr Expression constructors. A number of expression constants and constructors are built into the term structure in guaranteed normal form. These are detected and constructed by using expression families efCond, efAnyTopDefn, efLetRec, efRecdMk efRecdGet, efUnionMk, efUnionGet, efUnionTest, efTupleMk, efTupleGet, efEquality, efCoerce efArrayMk, efUnit etc.
type exprFamily Projections into and out of subsets of expressions Note: an abbreviation for ('a,expr) family
type exprFamily11 Note: an abbreviation for (dtype * expr) exprFamily
type exprFamily12 Note: an abbreviation for (dtype * (expr * expr)) exprFamily
type exprFamily13 Note: an abbreviation for (dtype * (expr * expr * expr)) exprFamily
type exprFamily1N Note: an abbreviation for (dtype * expr list) exprFamily
type exprFamily21 Note: an abbreviation for ((dtype * dtype) * expr) exprFamily
type exprFamily22 Note: an abbreviation for ((dtype * dtype) * (expr * expr)) exprFamily
type exprFamilyE2 Note: an abbreviation for (expr * expr) exprFamily
type exprFamilyE3 Note: an abbreviation for (expr * expr * expr) exprFamily
type exprFamilyGN1 Note: an abbreviation for ('a * dtype list * expr) exprFamily
type exprFamilyGNN Note: an abbreviation for ('a * dtype list * expr list) exprFamily
type exprFamilyLLinear Note: an abbreviation for (expr * 'b) exprFamily
type exprFamilyN1 Note: an abbreviation for (dtype list * expr) exprFamily
type exprFamilyNN Note: an abbreviation for (dtype list * expr list) exprFamily
type exprFamilyRLinear Constant expressions where constants (e.g. integers) carry some data (e.g. the relevant integer) Note: an abbreviation for ('b * expr) exprFamily
type exprVar Information at the binding site of a variable
type exprVarName Names of variables. See [[freshExprVarName]] to generate new names.
type methSpec Specificaton of the data carried by a efMethodCall constructed term
type propGetOpData Specificaton of the data carried by a efPropGetCall constructed term
type RawArgSaver For internal use only.
type recdFieldSpec Specificaton of a field in an F# record Note: an abbreviation for dtyconNamed * string
type recdGetOpData Specificaton of the data carried by a efRecGet constructed term
type recdMkOpData Specificaton of the data carried by a efRecdMk constructed term
type template Type-carrying quoted expression templates.
type topDefData Specificaton of a reference to a top-level definition
type topDefPath The namespace/module path to an F# value Note: an abbreviation for string list * string
type tupleGetOpData Specificaton of the data carried by a efTupleGet constructed term
type uconstrSpec Specificaton of a constructor in an F# union type Note: an abbreviation for dtyconNamed * string
type unionGetOpData Specificaton of the data carried by a efUnionGet constructed term
type unionMkOpData Specificaton of the data carried by a efUnionMk constructed term
type unionTestOpData Specificaton of the data carried by a efUnionTest constructed term
type varSpecN Note: an abbreviation for exprVar list

Values

ValueDescription
val bindMethod :
  (Type list -> 'a -> Type) -> Type -> string * int * 'a list * 'a -> MethodInfo
General method binder helper to hide some of the detail of using System.Reflection to bind method specications to generic methods
val deepMacroExpandUntil : (expr -> bool) -> expr -> expr
Perform macro expansion (deep call-by-value reduction) on an expression. Lambda applications are beta-reduced after reducing the function term and the argument term. Top-level definitions are expanded according to their definitions. Top-level definitions that are not functions are expanded once per use. The interior bodies of lambda expressions are reduced. Reduction rules for unions, records, arithmetic etc. are not applied. A cutoff that halts the rewriting for expressions that pass the given test (usually a test for inclusion within a particular 'target' langauge).
val efAnd : (expr * expr) exprFamily
The expression family corresponding to "a && b " expressions
val efAnyTopDefn : (topDefData * dtype list) exprFamily
The family of expressions that are constants referring to top-level public definitions, where the constants may generic and applied to a number of type arguments.
val efApp : (expr * expr) exprFamily
The family of expression applications
val efApps : expr list exprFamilyLLinear
An expression family corresponding to a series of applications f(g(...(x))
val efArrayMk : exprFamily1N
The family of array construction expressions
val efBool : bool exprFamily
The family of constant boolean expressions
val efByte : byte exprFamily
val efChar : char exprFamily
The family of constant unicode character expressions
val efCoerce : exprFamily21
The family of coercion expressions, resulting from implicit coercions at object-model calls and explicit coercions elsewhere.
val efCond : exprFamily13
The family of 'if ... then ... else' expressions
val efConst : (exprConstr * dtype list) exprFamily
The family of expression constructors and constant expressions
val efCtorCall : ctorSpec exprFamilyGNN
The family of new-object calls to constructors in the .NET obejct model
val efDefn : expr -> dtype list exprFamily
Build a family of expressions corresponding to uses of a particular known top level definition The input expression must be an efAnyTopDefn. Often used to name a particular definition, e.g. efDefn (<@ List.map @>)
val efDelegateMk : exprFamily11
The family of calls to construct delegate values in the .NET obejct model
val efDouble : float exprFamily
The family of constant 64-bit floating point number expressions
val efEquality : exprFamily12
The family of equality tests, resulting from the compilation of pattern matching
val efFalse : unit exprFamily
The expression family corresponding to the constant 'false'. A refinement of efBool.
val efForLoop : exprFamilyE3
The family of for-loop expressions, where the body of the for-loop is encoded as a lambda. The signature of this expression family is likely to change in a future release.
val efGetAddr : expr exprFamily
The family of address-access expressions. Under revision.
val efHole : dtype exprFamily
The family of expressions representing holes in quotations
val efInt16 : int16 exprFamily
val efInt32 : int32 exprFamily
val efInt64 : int64 exprFamily
val efLambda : (exprVar * expr) exprFamily
The family of lambda (abstraction) expressions
val efLambdas : exprVar list exprFamilyRLinear
An expression family corresponding to a series of lambdas.
val efLet : ((exprVar * expr) * expr) exprFamily
The family of expressions associated with 'let' constructs
val efLetRec : ((exprVar * expr) list * expr) exprFamily
The family of recursives expressions associated with 'let rec' constructs
val efLiftedValue : obj exprFamily
The family of expressions made up of reified (lifted) values generated via the 'lift' function
val efMethodCall : methSpec exprFamilyGNN
The family of calls to the .NET obejct model, excluding property accesses etc.
val efOr : (expr * expr) exprFamily
The expression family corresponding to "a || b " expressions
val efPropGetCall : propGetOpData exprFamilyGN1
The family of calls to property accessors in the .NET obejct model
val efQuote : expr exprFamily
The family of quoted expressions (for inner quotations)
val efRecdGet : recdGetOpData exprFamilyGN1
The family of record-access expressions
val efRecdMk : recdMkOpData exprFamilyGNN
The family of record-construction expressions
val efSByte : sbyte exprFamily
The family of constant signed 8-bit integers
val efSeq : exprFamilyE2
The family of sequence expressions "a;b"
val efSingle : float32 exprFamily
The family of constant 32-bit floating point number expressions
val efString : string exprFamily
The family of constant string expressions
val efTemplate : ('rawqty,'rawfty) template -> 'rawqty exprFamily
val efTrue : unit exprFamily
The expression family corresponding to the constant 'true'. A refinement of efBool.
val efTupleGet : tupleGetOpData exprFamilyGN1
The family of tuple access expressions
val efTupleMk : exprFamilyNN
The family of tuple-expressions
val efUInt16 : uint16 exprFamily
val efUInt32 : uint32 exprFamily
val efUInt64 : uint64 exprFamily
val efUnionGet : unionGetOpData exprFamilyGN1
The family of discriminated-union access expressions, resulting from the compilation of pattern matches
val efUnionMk : unionMkOpData exprFamilyGNN
The family of discriminated-union construction expressions
val efUnionTest : unionTestOpData exprFamilyGN1
The family of discriminated-union discrimination test expressions, resulting from the compilation of pattern matches
val efUnit : unit exprFamily
The unary family of 'unit' constant expressions
val efVar : exprVarName exprFamily
The family of variable expressions
val efWhileLoop : exprFamilyE2
The family of while-loop expressions, where the body of the loop is encoded as a lambda. The signature of this expression family is likely to change in a future release.
val explicitlyRegisterTopDefs : #Assembly -> string -> byte [] -> unit
Permit top-level environments to explicitly register new pickled resources that represent persisted top level definitions.
val fill : ('b,'rawfty) template -> 'rawfty
Match an existing raw expression against the given expression template
val freeInExpr : expr -> exprVarName list
Get the free expression variables of an expression as a list
val freshExprVarName : (string -> exprVarName)
Generate a new variable name, using the given name as a basis
val op_LessAtAt AtAtGreater : ('b,'rawfty) template -> 'rawfty
ASCII syntax for raw expression quotation. If there are holes in the expression then a function is produced to generate new terms via the function 'fill'.
val op_LessAtAtBar BarAtAtGreater :
  ('rawqty,'b) template -> expr -> 'rawqty option
ASCII syntax for raw expression querying via matching
val op_LessAtAtDot DotAtAtGreater : ('a,'b) template -> ('a,'b) template
ASCII syntax for raw expression template quotation.
val pickledDefinitionsResourceNameBase : string
Files compiled with --quotation-data persist definitions to the emitted assembly ('cross stage persistence of level 0 definitions'). They are saved as a resource in the emitted module. This is the base name for the resources.
val query : ('rawqty,'b) template -> expr -> 'rawqty option
Match an existing raw expression against the given raw expression template
val resolveTopDef : topDefData * dtype list -> expr option
Resolve a top level definition to an implementation. If the definition is polymorphic then appropriate type arguments must also be specified.
val substitute :
  (dtypeVarIdx -> dtype option) -> (exprVarName -> expr option) -> expr -> expr
Substitute through the given expression using the given functions to map variables to new values. The functions must give consistent results at each application. Variable renaming may occur on the target expression if variable capture occurs.
val unpickle : Type -> byte [] -> ('a,'b) template
This function is called automatically when quotation syntax (<@@ @@>) and related raw-expression quotations are used. The bytes are a pickled binary representation of an unlinke form of the qutoed expression, and the System.Type argument is any type in the assembly where the quoted expression occurs, i.e. it helps scope the interpretation of the cross-assembly references in the bytes.

See Also

Microsoft.FSharp.Quotations


Documentation for assembly fslib, version 1.1.10.1, generated using F# version 1.1.10.1