Header menu logo Fabulous.AST

Namespaces

For details on how the AST node works, please refer to the Fantomas documentation. See also official documentation for a comparison between the two.

Constructors

Constructors

Description

Namespace(name: string)

Creates a NamespaceNode AST node with the specified name.

Namespace(name: string)

Creates an implicit NamespaceNode AST node with the specified name

AnonymousModule()

Creates an NamespaceNode AST node.

Modifier Functions

Modifier

Description

toRecursive(this: WidgetBuilder)

Adds a scalar indicating that the namespace is recursive.

toPrivate(this: WidgetBuilder)

Sets the accessibility of the namespace to private.

toPublic(this: WidgetBuilder)

Sets the accessibility of the namespace to public.

toInternal(this: WidgetBuilder)

Sets the accessibility of the namespace to internal.

toImplicit(this: WidgetBuilder)

Sets the namespace to be implicit.

xmlDocs(this: WidgetBuilder, xmlDocs: string list)

Adds XML documentation comments to the module.

attributes(this: WidgetBuilder, attributes: WidgetBuilder list)

Adds multiple attributes to the module.

attribute(this: WidgetBuilder, attribute: WidgetBuilder)

Adds a single attribute to the module.

#r "../../src/Fabulous.AST/bin/Release/netstandard2.1/publish/Fantomas.Core.dll"
#r "../../src/Fabulous.AST/bin/Release/netstandard2.1/publish/Fabulous.AST.dll"
#r "../../src/Fabulous.AST/bin/Release/netstandard2.1/publish/Fantomas.FCS.dll"

open Fabulous.AST
open type Fabulous.AST.Ast

Oak() {
    Namespace("Widgets") {
        TypeDefn("MyWidget1") { Member("this.WidgetName", String("Widget1")) }

        Module("WidgetsModule") { Value("widgetName", String("Widget2")) }
    }
    |> _.triviaBefore(SingleLine("Namespace"))
    |> _.triviaAfter(Newline())

    Namespace("Widgets.WidgetModule") {
        Function(
            "widgetFunction",
            [ ParameterPat("x"); ParameterPat("y") ],
            AppExpr("printfn", [ String("%A %A"); String("x"); String("y") ])
        )
    }
    |> _.toImplicit()
    |> _.triviaBefore(SingleLine("Implicit Namespace"))
    |> _.triviaAfter(Newline())

    Namespace("Widgets") {
        Module("WidgetModule1") {
            Function(
                "widgetFunction",
                [ ParameterPat("x"); ParameterPat("y") ],
                AppExpr("printfn", [ String("Module1 %A %A"); String("x"); String("y") ])
            )
        }

        Module("WidgetModule2") {
            Function(
                "widgetFunction",
                [ ParameterPat("x"); ParameterPat("y") ],
                AppExpr("printfn", [ String("Module2 %A %A"); String("x"); String("y") ])
            )
        }

        Module("useWidgets") {
            SingleExpr(
                "do",
                CompExprBodyExpr(
                    [ AppExpr("WidgetModule1.widgetFunction", [ Int(10); Int(20) ])
                      AppExpr("WidgetModule2.widgetFunction", [ Int(5); Int(6) ]) ]
                )
            )
        }
    }
    |> _.triviaBefore(SingleLine("Multiple Modules"))
    |> _.triviaAfter(Newline())

    Namespace("Widgets") {
        TypeDefn("MyWidget1") { Member("this.WidgetName", String("Widget1")) }

        Module("WidgetsModule") { Value("widgetName", String("Widget2")) }
    }
    |> _.triviaBefore(SingleLine("Namespace"))
    |> _.triviaAfter(Newline())

    Namespace("Outer") {
        TypeDefn("MyClass", UnitPat()) {
            Member("this.X", ParenPat(ParameterPat(ConstantPat(Constant "x"))), InfixAppExpr("p", "+", Int(1)))
        }
        |> _.triviaBefore(SingleLine("Full name: Outer.MyClass"))
    }
    |> _.triviaBefore(SingleLine("Nested Namespaces"))
    |> _.triviaAfter(Newline())

    Namespace("Outer.Inner") { TypeDefn("MyClass", UnitPat()) { Member("this.Prop1", String("X")) } }
    |> _.triviaBefore(SingleLine("Full name: Outer.Inner.MyClass"))
    |> _.triviaAfter(Newline())

    GlobalNamespace() { TypeDefn("MyClass", UnitPat()) { Member("this.Prop1", String("X")) } }
    |> _.triviaBefore(SingleLine("Global Namespace"))
    |> _.triviaAfter(Newline())

    AnonymousModule() { Value("x", ConstantExpr(Int(3))) }
    |> _.triviaBefore(SingleLine("Anonymous Module"))
    |> _.triviaAfter(Newline())

    Namespace("MutualReferences") {
        Union("Orientation") {
            UnionCase("Up")
            UnionCase("Down")
        }

        Union("PeelState") {
            UnionCase("Peeled")
            UnionCase("Unpeeled")
        }

        ExceptionDefn("DontSqueezeTheBananaException", Field("Banana"))

        TypeDefn("Banana", Constructor(ParenPat(ParameterPat("orientation", LongIdent("Orientation"))))) {
            MemberVal("IsPeeled", Bool(false), true, true)
            MemberVal("Orientation", "orientation", true, true)

            MemberVal("Sides", ListExpr([ "PeelState"; "Unpeeled" ]), true, true)
                .returnType(LongIdent "PeelState list")

            Member("self.Peel", UnitPat(), "BananaHelpers.peel")
                .triviaAfter(LineCommentAfterSourceCode("Note the dependency on the BananaHelpers module."))

            Member("self.SqueezeJuiceOut", UnitPat(), "raise (DontSqueezeTheBananaException self)")
                .triviaAfter(LineCommentAfterSourceCode("This member depends on the exception above."))
        }

        Module("BananaHelpers") {
            Function(
                "peel",
                [ ParenPat(ParameterPat("b", "Banana")) ],
                CompExprBodyExpr(
                    [ Function(
                          "flip",
                          [ ParenPat(ParameterPat("banana", "Banana")) ],
                          MatchExpr(
                              "banana.Orientation",
                              [ MatchClauseExpr(
                                    "Up",
                                    CompExprBodyExpr(
                                        [ LongIdentSetExpr("banana.Orientation", "Down"); ConstantExpr("banana") ]
                                    )
                                )

                                MatchClauseExpr("Down", "banana") ]
                          )
                      )
                      |> LetOrUseExpr

                      Function(
                          "peelSides",
                          [ ParenPat(ParameterPat("banana", "Banana")) ],
                          InfixAppExpr(
                              "banana.Sides",
                              "|>",
                              MatchLambdaExpr(
                                  [ MatchClauseExpr("Unpeeled", "Peeled"); MatchClauseExpr("Peeled", "Peeled") ]
                              )
                          )
                      )
                      |> LetOrUseExpr

                      MatchExpr(
                          "b.Orientation",
                          [ MatchClauseExpr("Up", SameInfixAppsExpr("b", [ ("|>", "flip"); ("|>", "peelSides") ]))

                            MatchClauseExpr("Down", InfixAppExpr("b", "|>", "peelSides")) ]
                      )
                      |> OtherExpr ]
                )
            )
        }
        |> _.triviaBefore(Newline())
        |> _.triviaBefore(SingleLine("Mutual References"))
        |> _.triviaAfter(Newline())
        |> _.triviaAfter(
            BlockComment(
                """
Note that the exception DontSqueezeTheBananaException and the class Banana both refer to each other.
Additionally, the module BananaHelpers and the class Banana also refer to each other.
This wouldn't be possible to express in F# if you removed the rec keyword from the MutualReferences namespace.
"""
            )
        )

    }
    |> _.toRecursive()
    |> _.triviaBefore(SingleLine("Recursive Namespace"))
    |> _.triviaAfter(Newline())

}
|> Gen.mkOak
|> Gen.run
|> printfn "%s"

// produces the following code:
// Namespace
namespace Widgets

type MyWidget1 =
    member this.WidgetName = "Widget1"

module WidgetsModule =
    let widgetName = "Widget2"


// Implicit Namespace
module Widgets.WidgetModule

let widgetFunction x y = printfn "%A %A" "x" "y"


// Multiple Modules
namespace Widgets

module WidgetModule1 =
    let widgetFunction x y = printfn "Module1 %A %A" "x" "y"

module WidgetModule2 =
    let widgetFunction x y = printfn "Module2 %A %A" "x" "y"

module useWidgets =
    do
        WidgetModule1.widgetFunction 10 20
        WidgetModule2.widgetFunction 5 6


// Namespace
namespace Widgets

type MyWidget1 =
    member this.WidgetName = "Widget1"

module WidgetsModule =
    let widgetName = "Widget2"


// Nested Namespaces
namespace Outer
// Full name: Outer.MyClass
type MyClass() =
    member this.X(x) = p + 1


// Full name: Outer.Inner.MyClass
namespace Outer.Inner

type MyClass() =
    member this.Prop1 = "X"


// Global Namespace
namespace global

type MyClass() =
    member this.Prop1 = "X"


// Anonymous Module
let x = 3


// Recursive Namespace
namespace rec MutualReferences

type Orientation =
    | Up
    | Down

type PeelState =
    | Peeled
    | Unpeeled

exception DontSqueezeTheBananaException of Banana

type Banana(orientation: Orientation) =
    member val IsPeeled = false with get, set
    member val Orientation = orientation with get, set
    member val Sides: PeelState list = [ PeelState; Unpeeled ] with get, set
    member self.Peel() = BananaHelpers.peel // Note the dependency on the BananaHelpers module.

    member self.SqueezeJuiceOut() =
        raise (DontSqueezeTheBananaException self) // This member depends on the exception above.

// Mutual References
module BananaHelpers =
    let peel (b: Banana) =
        let flip (banana: Banana) =
            match banana.Orientation with
            | Up ->
                banana.Orientation <- Down
                banana
            | Down -> banana

        let peelSides (banana: Banana) =
            banana.Sides
            |> function
                | Unpeeled -> Peeled
                | Peeled -> Peeled

        match b.Orientation with
        | Up -> b |> flip |> peelSides
        | Down -> b |> peelSides

(*
Note that the exception DontSqueezeTheBananaException and the class Banana both refer to each other.
Additionally, the module BananaHelpers and the class Banana also refer to each other.
This wouldn't be possible to express in F# if you removed the rec keyword from the MutualReferences namespace.
*)
namespace Fabulous
namespace Fabulous.AST
type Ast = class end
Multiple items
static member Ast.Oak: unit -> CollectionBuilder<Fantomas.Core.SyntaxOak.Oak,'marker>

--------------------
module Oak from Fabulous.AST
static member Ast.Namespace: name: string -> CollectionBuilder<Fantomas.Core.SyntaxOak.ModuleOrNamespaceNode,Fantomas.Core.SyntaxOak.ModuleDecl>
static member Ast.TypeDefn: name: string -> CollectionBuilder<Fantomas.Core.SyntaxOak.TypeDefnRegularNode,Fantomas.Core.SyntaxOak.MemberDefn>
static member Ast.TypeDefn: name: string * constructor: WidgetBuilder<Fantomas.Core.SyntaxOak.ImplicitConstructorNode> -> CollectionBuilder<Fantomas.Core.SyntaxOak.TypeDefnRegularNode,Fantomas.Core.SyntaxOak.MemberDefn>
static member Ast.TypeDefn: name: string * constructor: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> -> CollectionBuilder<Fantomas.Core.SyntaxOak.TypeDefnRegularNode,Fantomas.Core.SyntaxOak.MemberDefn>
static member Ast.Member: name: string * body: string * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Member: name: string * body: string * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Member: name: string * body: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Member: name: string * body: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Member: name: string * body: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Member: name: string * body: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Member: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * body: string * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Member: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * body: string * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Member: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * body: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Member: name: string * body: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
Multiple items
static member Ast.String: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Constant>
static member Ast.String: value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Constant>
static member Ast.String: unit -> WidgetBuilder<Fantomas.Core.SyntaxOak.Type>

--------------------
module String from Fabulous.AST

--------------------
module String from Microsoft.FSharp.Core
static member Ast.Module: name: string -> CollectionBuilder<Fantomas.Core.SyntaxOak.NestedModuleNode,Fantomas.Core.SyntaxOak.ModuleDecl>
static member Ast.Value: name: string * value: string * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Value: name: string * value: string * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Value: name: string * value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Value: name: string * value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Value: name: string * value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Value: name: string * value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Value: name: string * value: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Value: name: string * value: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Value: name: string * value: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Value: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.SingleLine: text: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.TriviaContent>
Multiple items
static member Ast.Newline: unit -> WidgetBuilder<Fantomas.Core.SyntaxOak.TriviaContent>

--------------------
module Newline from Fabulous.AST
static member Ast.Function: name: string * parameters: string * bodyExpr: string * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Function: name: string * parameters: string * bodyExpr: string * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Function: name: string * parameters: string * bodyExpr: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Function: name: string * parameters: string * bodyExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Function: name: string * parameters: string * bodyExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Function: name: string * parameters: string * bodyExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Function: name: string * parameters: string * bodyExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Function: name: string * parameters: string * bodyExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Function: name: string * parameters: string * bodyExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.Function: name: string * parameters: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * bodyExpr: string * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode>
   (+0 other overloads)
static member Ast.ParameterPat: name: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ParameterPat: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ParameterPat: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ParameterPat: name: string * pType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ParameterPat: name: string * pType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ParameterPat: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * pType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ParameterPat: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * pType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ParameterPat: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * pType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ParameterPat: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * pType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.AppExpr: name: string * item: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
   (+0 other overloads)
static member Ast.AppExpr: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * item: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
   (+0 other overloads)
static member Ast.AppExpr: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * item: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
   (+0 other overloads)
static member Ast.AppExpr: name: string * item: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
   (+0 other overloads)
static member Ast.AppExpr: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * item: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
   (+0 other overloads)
static member Ast.AppExpr: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * item: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
   (+0 other overloads)
static member Ast.AppExpr: name: string * item: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
   (+0 other overloads)
static member Ast.AppExpr: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * item: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
   (+0 other overloads)
static member Ast.AppExpr: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * item: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
   (+0 other overloads)
static member Ast.AppExpr: name: string * items: string list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
   (+0 other overloads)
static member Ast.SingleExpr: leading: string * value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.SingleExpr: leading: string * value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.SingleExpr: leading: string * value: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.SingleExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.ExprSingleNode> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.CompExprBodyExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.CompExprBodyExpr: values: WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode> list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.CompExprBodyExpr: value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.CompExprBodyExpr: values: string list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.CompExprBodyExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.CompExprBodyExpr: values: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.CompExprBodyExpr: values: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.CompExprBodyExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.ComputationExpressionStatement> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.CompExprBodyExpr: values: WidgetBuilder<Fantomas.Core.SyntaxOak.ComputationExpressionStatement> list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.Int: value: int -> WidgetBuilder<Fantomas.Core.SyntaxOak.Constant>
static member Ast.Int: unit -> WidgetBuilder<Fantomas.Core.SyntaxOak.Type>
static member Ast.UnitPat: unit -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
Multiple items
static member Ast.ParenPat: pat: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ParenPat: pat: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ParenPat: pat: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>

--------------------
module ParenPat from Fabulous.AST
static member Ast.ConstantPat: value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ConstantPat: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
Multiple items
static member Ast.Constant: value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Constant>

--------------------
module Constant from Fabulous.AST
static member Ast.InfixAppExpr: lhs: string * operator: string * rhs: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.InfixAppExpr: lhs: string * operator: string * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.InfixAppExpr: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * operator: string * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.InfixAppExpr: lhs: string * operator: string * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.InfixAppExpr: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * operator: string * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.InfixAppExpr: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * operator: string * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.GlobalNamespace: unit -> CollectionBuilder<Fantomas.Core.SyntaxOak.ModuleOrNamespaceNode,Fantomas.Core.SyntaxOak.ModuleDecl>
static member Ast.AnonymousModule: unit -> CollectionBuilder<Fantomas.Core.SyntaxOak.ModuleOrNamespaceNode,Fantomas.Core.SyntaxOak.ModuleDecl>
static member Ast.ConstantExpr: value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.ConstantExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
Multiple items
static member Ast.Union: name: string -> CollectionBuilder<Fantomas.Core.SyntaxOak.TypeDefnUnionNode,Fantomas.Core.SyntaxOak.UnionCaseNode>

--------------------
module Union from Fabulous.AST
Multiple items
static member Ast.UnionCase: name: string * fields: (string * WidgetBuilder<Fantomas.Core.SyntaxOak.Type>) list -> WidgetBuilder<Fantomas.Core.SyntaxOak.UnionCaseNode>
static member Ast.UnionCase: name: string * fields: (string * string) list -> WidgetBuilder<Fantomas.Core.SyntaxOak.UnionCaseNode>
static member Ast.UnionCase: name: string * field: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.UnionCaseNode>
static member Ast.UnionCase: name: string * field: WidgetBuilder<Fantomas.Core.SyntaxOak.FieldNode> -> WidgetBuilder<Fantomas.Core.SyntaxOak.UnionCaseNode>
static member Ast.UnionCase: name: string * fields: string list -> WidgetBuilder<Fantomas.Core.SyntaxOak.UnionCaseNode>
static member Ast.UnionCase: name: string * field: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.UnionCaseNode>
static member Ast.UnionCase: name: string * fields: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> list -> WidgetBuilder<Fantomas.Core.SyntaxOak.UnionCaseNode>
static member Ast.UnionCase: name: string * fields: WidgetBuilder<Fantomas.Core.SyntaxOak.FieldNode> list -> WidgetBuilder<Fantomas.Core.SyntaxOak.UnionCaseNode>
static member Ast.UnionCase: name: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.UnionCaseNode>

--------------------
module UnionCase from Fabulous.AST
Multiple items
static member Ast.ExceptionDefn: value: string * parameters: (string * string) list -> WidgetBuilder<Fantomas.Core.SyntaxOak.ExceptionDefnNode>
static member Ast.ExceptionDefn: value: string * parameters: (string * WidgetBuilder<Fantomas.Core.SyntaxOak.Type>) list -> WidgetBuilder<Fantomas.Core.SyntaxOak.ExceptionDefnNode>
static member Ast.ExceptionDefn: value: string * parameter: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.ExceptionDefnNode>
static member Ast.ExceptionDefn: value: string * parameters: string list -> WidgetBuilder<Fantomas.Core.SyntaxOak.ExceptionDefnNode>
static member Ast.ExceptionDefn: value: string * parameter: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.ExceptionDefnNode>
static member Ast.ExceptionDefn: value: string * parameters: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> list -> WidgetBuilder<Fantomas.Core.SyntaxOak.ExceptionDefnNode>
static member Ast.ExceptionDefn: value: string * parameter: WidgetBuilder<Fantomas.Core.SyntaxOak.FieldNode> -> WidgetBuilder<Fantomas.Core.SyntaxOak.ExceptionDefnNode>
static member Ast.ExceptionDefn: value: string * parameters: WidgetBuilder<Fantomas.Core.SyntaxOak.FieldNode> list -> WidgetBuilder<Fantomas.Core.SyntaxOak.ExceptionDefnNode>
static member Ast.ExceptionDefn: value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.ExceptionDefnNode>
static member Ast.ExceptionDefn: value: WidgetBuilder<Fantomas.Core.SyntaxOak.UnionCaseNode> -> WidgetBuilder<Fantomas.Core.SyntaxOak.ExceptionDefnNode>

--------------------
module ExceptionDefn from Fabulous.AST
Multiple items
static member Ast.Field: name: string * fieldType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.FieldNode>
static member Ast.Field: name: string * fieldType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.FieldNode>
static member Ast.Field: fieldType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.FieldNode>
static member Ast.Field: fieldType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.FieldNode>

--------------------
module Field from Fabulous.AST
static member Ast.Constructor: pattern: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.ImplicitConstructorNode>
static member Ast.Constructor: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.ImplicitConstructorNode>
static member Ast.Constructor: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> -> WidgetBuilder<Fantomas.Core.SyntaxOak.ImplicitConstructorNode>
static member Ast.Constructor: pattern: string * expr: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnExplicitCtorNode>
static member Ast.Constructor: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * expr: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnExplicitCtorNode>
static member Ast.Constructor: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnExplicitCtorNode>
static member Ast.Constructor: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnExplicitCtorNode>
static member Ast.Constructor: pattern: string * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnExplicitCtorNode>
static member Ast.Constructor: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnExplicitCtorNode>
static member Ast.Constructor: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnExplicitCtorNode>
static member Ast.LongIdent: value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Type>
static member Ast.LongIdent: value: string list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Type>
static member Ast.MemberVal: identifier: string * expr: string * returnType: string * ?hasGetter: bool * ?hasSetter: bool -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnAutoPropertyNode>
static member Ast.MemberVal: identifier: string * expr: string * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> * ?hasGetter: bool * ?hasSetter: bool -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnAutoPropertyNode>
static member Ast.MemberVal: identifier: string * expr: string * ?hasGetter: bool * ?hasSetter: bool -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnAutoPropertyNode>
static member Ast.MemberVal: identifier: string * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * returnType: string * ?hasGetter: bool * ?hasSetter: bool -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnAutoPropertyNode>
static member Ast.MemberVal: identifier: string * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> * ?hasGetter: bool * ?hasSetter: bool -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnAutoPropertyNode>
static member Ast.MemberVal: identifier: string * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * ?hasGetter: bool * ?hasSetter: bool -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnAutoPropertyNode>
static member Ast.MemberVal: identifier: string * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * returnType: string * ?hasGetter: bool * ?hasSetter: bool -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnAutoPropertyNode>
static member Ast.MemberVal: identifier: string * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> * ?hasGetter: bool * ?hasSetter: bool -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnAutoPropertyNode>
static member Ast.MemberVal: identifier: string * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * ?hasGetter: bool * ?hasSetter: bool -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefnAutoPropertyNode>
static member Ast.Bool: value: bool -> WidgetBuilder<Fantomas.Core.SyntaxOak.Constant>
static member Ast.ListExpr: value: string list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.ListExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.ListExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
Multiple items
static member Ast.LineCommentAfterSourceCode: text: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.TriviaContent>

--------------------
module LineCommentAfterSourceCode from Fabulous.AST
static member Ast.MatchExpr: value: string * clause: WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.MatchExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * clause: WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.MatchExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * clause: WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.MatchExpr: value: string * clauses: WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode> list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.MatchExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * clauses: WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode> list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.MatchExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * clauses: WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode> list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.MatchClauseExpr: pattern: string * bodyExpr: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode>
   (+0 other overloads)
static member Ast.MatchClauseExpr: pattern: string * bodyExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode>
   (+0 other overloads)
static member Ast.MatchClauseExpr: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * bodyExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode>
   (+0 other overloads)
static member Ast.MatchClauseExpr: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * bodyExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode>
   (+0 other overloads)
static member Ast.MatchClauseExpr: pattern: string * bodyExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode>
   (+0 other overloads)
static member Ast.MatchClauseExpr: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * bodyExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode>
   (+0 other overloads)
static member Ast.MatchClauseExpr: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * bodyExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode>
   (+0 other overloads)
static member Ast.MatchClauseExpr: pattern: string * whenExpr: string * bodyExpr: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode>
   (+0 other overloads)
static member Ast.MatchClauseExpr: pattern: string * whenExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * bodyExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode>
   (+0 other overloads)
static member Ast.MatchClauseExpr: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * whenExpr: string * bodyExpr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode>
   (+0 other overloads)
static member Ast.LongIdentSetExpr: identifier: string * value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.LongIdentSetExpr: identifier: string * value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.LongIdentSetExpr: identifier: string * value: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.LetOrUseExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.BindingNode> -> WidgetBuilder<Fantomas.Core.SyntaxOak.ComputationExpressionStatement>
static member Ast.MatchLambdaExpr: clauses: WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode> list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.SameInfixAppsExpr: leading: string * items: (string * string) list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.SameInfixAppsExpr: leading: string * items: (string * WidgetBuilder<Fantomas.Core.SyntaxOak.Constant>) list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.SameInfixAppsExpr: leading: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * items: (string * string) list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.SameInfixAppsExpr: leading: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * items: (string * WidgetBuilder<Fantomas.Core.SyntaxOak.Constant>) list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.SameInfixAppsExpr: leading: string * items: (string * WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>) list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.SameInfixAppsExpr: leading: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * items: (string * WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>) list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.SameInfixAppsExpr: leading: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * items: (string * WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>) list -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.OtherExpr: value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.ComputationExpressionStatement>
static member Ast.OtherExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.ComputationExpressionStatement>
static member Ast.OtherExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.ComputationExpressionStatement>
Multiple items
static member Ast.BlockComment: comment: string * ?newlineBefore: bool * ?newlineAfter: bool -> WidgetBuilder<Fantomas.Core.SyntaxOak.TriviaContent>

--------------------
module BlockComment from Fabulous.AST
module Gen from Fabulous.AST
<summary> It takes the root of the widget tree and create the corresponding Fantomas node, and recursively creating all children nodes </summary>
val mkOak: root: WidgetBuilder<'node> -> 'node
val run: oak: Fantomas.Core.SyntaxOak.Oak -> string
val printfn: format: Printf.TextWriterFormat<'T> -> 'T

Type something to start searching.