1 people like it.
    Like the snippet!
  
  ML style module example
  ML style module example
   1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
  | 
///
module Target = 
    
  /// There are three types of compilation
  /// targets. Eval for code compiled through
  /// the eval function, Global for code
  /// that is compiled in the global scope
  /// and Function for code inside function bodies
  type Mode
    = Eval
    | Global
    | Function
  /// Record that represents a compilation target
  /// which is a grouping of the following properties:
  /// 
  /// * Ast - The syntax tree to compile
  /// * Mode - The target mode (eval, global or function)
  /// * DelegateType - The target delegate signature we're targeting
  /// * ParameterTypes - The parameter types of the delegate signature's invoke method
  /// * Environment - The IronJS environment object we're compiling for
  type T = {
    Ast: Ast.Tree
    Mode: Mode
    DelegateType: Type option
    ParameterTypes: Type array
    Environment: Env
  }
  /// The amount of parameters for this target
  let parameterCount (t:T) =
    t.ParameterTypes.Length
  /// Extracts the parameter types from a delegate
  let getParameterTypes = function
    | None -> [||]
    | Some(delegateType:Type) -> 
      delegateType 
      $ FSharp.Reflection.getDelegateParameterTypes 
      $ FSharp.Array.skip 2
  /// Creates a new T record
  let create ast mode delegateType env =
    {
      Ast = ast
      Mode = mode
      Environment = env
      DelegateType = delegateType
      ParameterTypes = delegateType |> getParameterTypes
    }
    
  /// Creates a new T record with Eval mode
  let createEval ast env =
    env |> create ast Mode.Eval None
  /// Creates a new T record with Global mode
  let createGlobal ast env =
    env |> create ast Mode.Global None
  | 
type Mode =
  | Eval
  | Global
  | Function
Full name: Script.Target.Mode
 There are three types of compilation
 targets. Eval for code compiled through
 the eval function, Global for code
 that is compiled in the global scope
 and Function for code inside function bodies
union case Mode.Eval: Mode
union case Mode.Global: Mode
union case Mode.Function: Mode
type T =
  {Ast: obj;
   Mode: Mode;
   DelegateType: obj;
   ParameterTypes: obj;
   Environment: obj;}
Full name: Script.Target.T
 Record that represents a compilation target
 which is a grouping of the following properties:
 
 * Ast - The syntax tree to compile
 * Mode - The target mode (eval, global or function)
 * DelegateType - The target delegate signature we're targeting
 * ParameterTypes - The parameter types of the delegate signature's invoke method
 * Environment - The IronJS environment object we're compiling for
T.Ast: obj
Multiple items
T.Mode: Mode
--------------------
type Mode =
  | Eval
  | Global
  | Function
Full name: Script.Target.Mode
 There are three types of compilation
 targets. Eval for code compiled through
 the eval function, Global for code
 that is compiled in the global scope
 and Function for code inside function bodies
T.DelegateType: obj
type 'T option = Option<'T>
Full name: Microsoft.FSharp.Core.option<_>
T.ParameterTypes: obj
type 'T array = 'T []
Full name: Microsoft.FSharp.Core.array<_>
T.Environment: obj
val parameterCount : t:T -> 'a
Full name: Script.Target.parameterCount
 The amount of parameters for this target
val t : T
val getParameterTypes : _arg1:obj option -> obj []
Full name: Script.Target.getParameterTypes
 Extracts the parameter types from a delegate
union case Option.None: Option<'T>
union case Option.Some: Value: 'T -> Option<'T>
val delegateType : obj
namespace Microsoft.FSharp
namespace Microsoft.FSharp.Reflection
module Array
from Microsoft.FSharp.Collections
val create : ast:'a -> mode:Mode -> delegateType:obj option -> env:'b -> T
Full name: Script.Target.create
 Creates a new T record
val ast : 'a
val mode : Mode
val delegateType : obj option
val env : 'a
val createEval : ast:'a -> env:'b -> T
Full name: Script.Target.createEval
 Creates a new T record with Eval mode
val createGlobal : ast:'a -> env:'b -> T
Full name: Script.Target.createGlobal
 Creates a new T record with Global mode
  
  
  More information