Header menu logo Fabulous.AST

Patterns

Patterns appear on the left of bindings, in match clauses, and in function parameters. Each F# pattern form has a widget — this page groups them by kind.

Contents

#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

Named, Or, As, and Ands Patterns

OrPat matches either alternative, AsPat binds the whole match to a name, and AndsPat requires all to match:

Oak() {
    AnonymousModule() {
        Value(OrPat(NamedPat("A"), "B"), ConstantExpr(Constant("C")))

        Value(AsPat(NamedPat("A"), "B"), ConstantExpr(Constant("C")))

        Value(AndsPat([ "A"; "B" ]), ConstantExpr(Constant("C")))
    }
}
|> Gen.mkOak
|> Gen.run
|> printfn "%s"

// produces the following code:
let A | B = C
let A as B = C
let A & B = C

Tuple Patterns

TuplePat destructures a tuple; StructTuplePat destructures a struct tuple:

Oak() {
    AnonymousModule() {
        Value(TuplePat([ "a"; "b" ]), TupleExpr([ Constant("1"); Constant("2") ]))

        Value(StructTuplePat([ NamedPat("e"); NamedPat("f") ]), StructTupleExpr([ Int(1); Int(2) ]))
    }
}
|> Gen.mkOak
|> Gen.run
|> printfn "%s"

// produces the following code:
let a, b = 1, 2
let struct (e, f) = struct (1, 2)

List Patterns

ListPat matches a list of elements; ListConsPat matches head-and-tail:

Oak() {
    AnonymousModule() {
        Value(ListPat([ NamedPat("c"); NamedPat("d") ]), ListExpr([ String("a"); String("b") ]))

        Value(ListConsPat(NamedPat("g"), NamedPat("h")), ListExpr([ Int(1) ]))
    }
}
|> Gen.mkOak
|> Gen.run
|> printfn "%s"

// produces the following code:
let [ c; d ] = [ "a"; "b" ]
let g :: h = [ 1 ]

Record Patterns

RecordPat destructures a record by field with RecordFieldPat:

Oak() {
    AnonymousModule() {
        Value(
            RecordPat([ RecordFieldPat("A", ConstantPat(Int(3))) ]),
            RecordExpr([ RecordFieldExpr("A", ConstantExpr(Int 5)) ])
        )
    }
}
|> Gen.mkOak
|> Gen.run
|> printfn "%s"

// produces the following code:
let { A = 3 } = { A = 5 }

Type-test Patterns

IsInstPat matches when the value is an instance of a given type — typically in a match clause:

Oak() {
    AnonymousModule() {
        MatchExpr(Constant("System.Object()"), [ MatchClauseExpr(IsInstPat(String()), ConstantExpr(Int(12))) ])
    }
}
|> Gen.mkOak
|> Gen.run
|> printfn "%s"

// produces the following code:
match System.Object() with
| :? string -> 12

Parameter Patterns with Attributes

You can add attributes to parameter patterns using the .attribute() or .attributes() modifiers. This is useful for adding attributes to constructor parameters or method parameters.

Oak() {
    AnonymousModule() {
        // Class with attributed constructor parameter
        TypeDefn("Class", Constructor(ParameterPat("c", Int()).attribute(Attribute("Obsolete")))) {
            // Method with attributed parameter
            Member("this.First", ParenPat(ParameterPat("a", String()).attribute(Attribute("Obsolete"))), UnitExpr())

            // Method with attributed parameter using function type
            Member(
                "this.Second",
                ParenPat(ParameterPat("a", Funs(String(), Int())).attribute(Attribute("A"))),
                UnitExpr()
            )
        }

        // Class with multiple attributed constructor parameters
        TypeDefn(
            "MyClass",
            Constructor(
                TuplePat(
                    [ ParameterPat("a", Int()).attribute(Attribute("Obsolete"))
                      ParameterPat("b", String()).attribute(Attribute("Required")) ]
                )
            )
        ) {
            Member("this.Value", ConstantExpr(Int(0)))
        }

        // Parameter with multiple attributes
        TypeDefn(
            "AnotherClass",
            Constructor(ParameterPat("c", Int()).attributes([ Attribute("Obsolete"); Attribute("Required") ]))
        ) {
            Member("this.Value", ConstantExpr(Int(0)))
        }
    }
}
|> Gen.mkOak
|> Gen.run
|> printfn "%s"

// produces the following code:
type Class([<Obsolete>] c: int) =
    member this.First([<Obsolete>] a: string) = ()
    member this.Second([<A>] a: string -> int) = ()

type MyClass([<Obsolete>] a: int, [<Required>] b: string) =
    member this.Value = 0

type AnotherClass([<Obsolete; Required>] c: int) =
    member this.Value = 0
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.AnonymousModule: unit -> CollectionBuilder<Fantomas.Core.SyntaxOak.ModuleOrNamespaceNode,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.OrPat: lhs: string * rhs: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.OrPat: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * rhs: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.OrPat: lhs: string * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.OrPat: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.OrPat: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.OrPat: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.OrPat: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * rhs: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.OrPat: lhs: string * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.OrPat: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.NamedPat: value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
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.Constant: value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Constant>

--------------------
module Constant from Fabulous.AST
static member Ast.AsPat: lhs: string * rhs: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.AsPat: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * rhs: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.AsPat: lhs: string * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.AsPat: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.AsPat: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.AsPat: lhs: string * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.AsPat: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * rhs: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.AsPat: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.AsPat: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.AndsPat: values: string seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.AndsPat: values: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.AndsPat: values: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
type Gen = static member mkOak: root: WidgetBuilder<'node> -> 'node static member parse: source: string -> string + 1 overload static member run: oak: Oak -> string + 1 overload
<summary> Renders a widget tree to F# source and verifies the result. <c>mkOak</c> turns the root widget into a Fantomas node (recursively building its children), <c>run</c> formats that node to source (optionally with a config), and <c>parse</c> round-trips the source back through the parser to confirm it is syntactically valid. Designed for pipeline use, e.g. <c>widget |&gt; Gen.parse</c> or <c>widget |&gt; Gen.mkOak |&gt; Gen.run |&gt; Gen.parse</c>. </summary>
static member Gen.mkOak: root: WidgetBuilder<'node> -> 'node
static member Gen.run: oak: Fantomas.Core.SyntaxOak.Oak -> string
static member Gen.run: oak: Fantomas.Core.SyntaxOak.Oak * config: Fantomas.Core.FormatConfig -> string
val printfn: format: Printf.TextWriterFormat<'T> -> 'T
Multiple items
static member Ast.TuplePat: values: string seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.TuplePat: values: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.TuplePat: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>

--------------------
module TuplePat from Fabulous.AST
static member Ast.TupleExpr: value: string seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.TupleExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.TupleExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
Multiple items
static member Ast.StructTuplePat: values: string seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.StructTuplePat: values: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.StructTuplePat: values: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>

--------------------
module StructTuplePat from Fabulous.AST
static member Ast.StructTupleExpr: value: string seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.StructTupleExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.StructTupleExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> seq -> 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.ListPat: values: string seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ListPat: values: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ListPat: values: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ListExpr: value: string seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.ListExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.ListExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
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.ListConsPat: lhs: string * rhs: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ListConsPat: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.ListConsPat: lhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * rhs: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
Multiple items
static member Ast.RecordPat: fields: WidgetBuilder<Fantomas.Core.SyntaxOak.PatRecordField> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>

--------------------
module RecordPat from Fabulous.AST
Multiple items
static member Ast.RecordFieldPat: name: string * pat: string * prefix: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.PatRecordField>
static member Ast.RecordFieldPat: name: string * pat: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * prefix: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.PatRecordField>
static member Ast.RecordFieldPat: name: string * pat: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * prefix: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.PatRecordField>
static member Ast.RecordFieldPat: name: string * pat: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.PatRecordField>
static member Ast.RecordFieldPat: name: string * pat: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.PatRecordField>
static member Ast.RecordFieldPat: name: string * pat: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> -> WidgetBuilder<Fantomas.Core.SyntaxOak.PatRecordField>

--------------------
module RecordFieldPat 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.RecordExpr: fields: WidgetBuilder<Fantomas.Core.SyntaxOak.RecordFieldNode> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.RecordExpr: copyInfo: string * fields: WidgetBuilder<Fantomas.Core.SyntaxOak.RecordFieldNode> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.RecordExpr: copyInfo: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * fields: WidgetBuilder<Fantomas.Core.SyntaxOak.RecordFieldNode> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.RecordExpr: copyInfo: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * fields: WidgetBuilder<Fantomas.Core.SyntaxOak.RecordFieldNode> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>

--------------------
module RecordExpr from Fabulous.AST
static member Ast.RecordFieldExpr: name: string * expr: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.RecordFieldNode>
static member Ast.RecordFieldExpr: name: string * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.RecordFieldNode>
static member Ast.RecordFieldExpr: name: string * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.RecordFieldNode>
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> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.MatchExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * clauses: WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode> seq -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.MatchExpr: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * clauses: WidgetBuilder<Fantomas.Core.SyntaxOak.MatchClauseNode> seq -> 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: string -> 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.IsInstPat: value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
static member Ast.IsInstPat: value: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern>
Multiple items
static member Ast.TypeDefn: name: string -> CollectionBuilder<Fantomas.Core.SyntaxOak.TypeDefn,Fantomas.Core.SyntaxOak.MemberDefn>
static member Ast.TypeDefn: name: string * constructor: WidgetBuilder<Fantomas.Core.SyntaxOak.ImplicitConstructorNode> -> CollectionBuilder<Fantomas.Core.SyntaxOak.TypeDefn,Fantomas.Core.SyntaxOak.MemberDefn>
static member Ast.TypeDefn: name: string * constructor: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> -> CollectionBuilder<Fantomas.Core.SyntaxOak.TypeDefn,Fantomas.Core.SyntaxOak.MemberDefn>

--------------------
module TypeDefn from Fabulous.AST
<summary> Common attributes shared by all TypeDefn widgets </summary>
static member Ast.Constructor: unit -> WidgetBuilder<Fantomas.Core.SyntaxOak.ImplicitConstructorNode>
   (+0 other overloads)
static member Ast.Constructor: pattern: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.ImplicitConstructorNode>
   (+0 other overloads)
static member Ast.Constructor: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.ImplicitConstructorNode>
   (+0 other overloads)
static member Ast.Constructor: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> -> WidgetBuilder<Fantomas.Core.SyntaxOak.ImplicitConstructorNode>
   (+0 other overloads)
static member Ast.Constructor: pattern: string * expr: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefn>
   (+0 other overloads)
static member Ast.Constructor: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * expr: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefn>
   (+0 other overloads)
static member Ast.Constructor: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefn>
   (+0 other overloads)
static member Ast.Constructor: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Pattern> * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefn>
   (+0 other overloads)
static member Ast.Constructor: pattern: string * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefn>
   (+0 other overloads)
static member Ast.Constructor: pattern: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefn>
   (+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.Attribute: value: string * expr: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.AttributeNode>
static member Ast.Attribute: value: string * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.AttributeNode>
static member Ast.Attribute: value: string * expr: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> -> WidgetBuilder<Fantomas.Core.SyntaxOak.AttributeNode>
static member Ast.Attribute: value: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.AttributeNode>
static member Ast.Member: name: string * body: string * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefn>
   (+0 other overloads)
static member Ast.Member: name: string * body: string * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefn>
   (+0 other overloads)
static member Ast.Member: name: string * body: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefn>
   (+0 other overloads)
static member Ast.Member: name: string * body: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefn>
   (+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.MemberDefn>
   (+0 other overloads)
static member Ast.Member: name: string * body: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefn>
   (+0 other overloads)
static member Ast.Member: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * body: string * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefn>
   (+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.MemberDefn>
   (+0 other overloads)
static member Ast.Member: name: WidgetBuilder<Fantomas.Core.SyntaxOak.Constant> * body: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefn>
   (+0 other overloads)
static member Ast.Member: name: string * body: WidgetBuilder<Fantomas.Core.SyntaxOak.Expr> * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.MemberDefn>
   (+0 other overloads)
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.UnitExpr: unit -> WidgetBuilder<Fantomas.Core.SyntaxOak.Expr>
static member Ast.Funs: parameters: string seq * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Type>
static member Ast.Funs: parameters: string * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Type>
static member Ast.Funs: parameters: string seq * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Type>
static member Ast.Funs: parameter: string * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Type>
static member Ast.Funs: parameter: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Type>
static member Ast.Funs: parameter: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Type>
static member Ast.Funs: parameters: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> seq * returnType: string -> WidgetBuilder<Fantomas.Core.SyntaxOak.Type>
static member Ast.Funs: parameters: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> seq * returnType: WidgetBuilder<Fantomas.Core.SyntaxOak.Type> -> WidgetBuilder<Fantomas.Core.SyntaxOak.Type>

Type something to start searching.