{
    "ignoreFiles": [
        "assemblyinfo.*"
    ],
    "global": {
        "numIndentationSpaces": 4
    },
    "typedItemSpacing": {
        "enabled": false,
        "config": {
            "typedItemStyle": "NoSpaces"
        }
    },
    "typePrefixing": {
        "enabled": false,
        "config": {
            "mode": "Hybrid"
        }
    },
    "unionDefinitionIndentation": { "enabled": false },
    "moduleDeclSpacing": { "enabled": false },
    "classMemberSpacing": { "enabled": false },
    "tupleCommaSpacing": { "enabled": false },
    "tupleIndentation": { "enabled": false },
    "tupleParentheses": { "enabled": false },
    "patternMatchClausesOnNewLine": { "enabled": false },
    "patternMatchOrClausesOnNewLine": { "enabled": false },
    "patternMatchClauseIndentation": { "enabled": false },
    "patternMatchExpressionIndentation": { "enabled": false },
    "recursiveAsyncFunction": { "enabled": false },
    "redundantNewKeyword": { "enabled": true },
    "nestedStatements": {
        "enabled": false,
        "config": {
            "depth": 8
        }
    },
    "cyclomaticComplexity": {
        "enabled": false,
        "config": {
            "maxComplexity": 40
        }
    },
    "reimplementsFunction": { "enabled": true },
    "canBeReplacedWithComposition": { "enabled": true },
    "avoidSinglePipeOperator": { "enabled": false },
    "usedUnderscorePrefixedElements": { "enabled": true },
    "failwithWithSingleArgument": { "enabled": true },
    "raiseWithSingleArgument": { "enabled": true },
    "nullArgWithSingleArgument": { "enabled": true },
    "invalidOpWithSingleArgument": { "enabled": true },
    "invalidArgWithTwoArguments": { "enabled": true },
    "failwithfWithArgumentsMatchingFormatString": { "enabled": true },
    "failwithBadUsage": { "enabled": true },
    "maxLinesInLambdaFunction": {
        "enabled": false,
        "config": {
            "maxLines": 7
        }
    },
    "maxLinesInMatchLambdaFunction": {
        "enabled": false,
        "config": {
            "maxLines": 100
        }
    },
    "maxLinesInValue": {
        "enabled": false,
        "config": {
            "maxLines": 100
        }
    },
    "maxLinesInFunction": {
        "enabled": false,
        "config": {
            "maxLines": 100
        }
    },
    "maxLinesInMember": {
        "enabled": false,
        "config": {
            "maxLines": 100
        }
    },
    "maxLinesInConstructor": {
        "enabled": false,
        "config": {
            "maxLines": 100
        }
    },
    "maxLinesInProperty": {
        "enabled": false,
        "config": {
            "maxLines": 70
        }
    },
    "maxLinesInModule": {
        "enabled": false,
        "config": {
            "maxLines": 1000
        }
    },
    "maxLinesInRecord": {
        "enabled": false,
        "config": {
            "maxLines": 500
        }
    },
    "maxLinesInEnum": {
        "enabled": false,
        "config": {
            "maxLines": 500
        }
    },
    "maxLinesInUnion": {
        "enabled": false,
        "config": {
            "maxLines": 500
        }
    },
    "maxLinesInClass": {
        "enabled": false,
        "config": {
            "maxLines": 500
        }
    },
    "interfaceNames": {
        "enabled": true,
        "config": {
            "naming": "PascalCase",
            "underscores": "None",
            "prefix": "I"
        }
    },
    "exceptionNames": {
        "enabled": true,
        "config": {
            "naming": "PascalCase",
            "underscores": "None",
            "suffix": "Exception"
        }
    },
    "typeNames": {
        "enabled": true,
        "config": {
            "naming": "PascalCase",
            "underscores": "None"
        }
    },
    "recordFieldNames": {
        "enabled": true,
        "config": {
            "naming": "PascalCase",
            "underscores": "None"
        }
    },
    "enumCasesNames": {
        "enabled": true,
        "config": {
            "naming": "PascalCase",
            "underscores": "None"
        }
    },
    "unionCasesNames": {
        "enabled": true,
        "config": {
            "naming": "PascalCase",
            "underscores": "None"
        }
    },
    "moduleNames": {
        "enabled": true,
        "config": {
            "naming": "PascalCase",
            "underscores": "None"
        }
    },
    "literalNames": {
        "enabled": true,
        "config": {
            "naming": "PascalCase",
            "underscores": "None"
        }
    },
    "namespaceNames": {
        "enabled": true,
        "config": {
            "naming": "PascalCase",
            "underscores": "None"
        }
    },
    "memberNames": {
        "enabled": true,
        "config": {
            "naming": "PascalCase",
            "underscores": "AllowPrefix"
        }
    },
    "parameterNames": {
        "enabled": true,
        "config": {
            "naming": "CamelCase",
            "underscores": "AllowPrefix"
        }
    },
    "measureTypeNames": {
        "enabled": true,
        "config": {
            "underscores": "None"
        }
    },
    "activePatternNames": {
        "enabled": true,
        "config": {
            "naming": "PascalCase",
            "underscores": "None"
        }
    },
    "genericTypesNames": {
        "enabled": true,
        "config": {
            "naming": "PascalCase",
            "underscores": "None"
        }
    },
    "publicValuesNames": {
        "enabled": true,
        "config": {
            "underscores": "AllowPrefix"
        }
    },
    "privateValuesNames": {
        "enabled": true,
        "config": {
            "naming": "CamelCase",
            "underscores": "AllowPrefix"
        }
    },
    "internalValuesNames": {
        "enabled": true,
        "config": {
            "naming": "CamelCase",
            "underscores": "AllowPrefix"
        }
    },
    "unnestedFunctionNames": {
        "enabled": false,
        "config": {
            "naming": "PascalCase",
            "underscores": "None"
        }
    },
    "nestedFunctionNames": {
        "enabled": false,
        "config": {
            "naming": "CamelCase",
            "underscores": "None"
        }
    },
    "maxNumberOfItemsInTuple": {
        "enabled": false,
        "config": {
            "maxItems": 4
        }
    },
    "maxNumberOfFunctionParameters": {
        "enabled": false,
        "config": {
            "maxItems": 5
        }
    },
    "maxNumberOfMembers": {
        "enabled": false,
        "config": {
            "maxItems": 32
        }
    },
    "maxNumberOfBooleanOperatorsInCondition": {
        "enabled": false,
        "config": {
            "maxItems": 4
        }
    },
    "favourIgnoreOverLetWild": { "enabled": true },
    "wildcardNamedWithAsPattern": { "enabled": true },
    "uselessBinding": { "enabled": true },
    "tupleOfWildcards": { "enabled": true },
    "favourTypedIgnore": { "enabled": false },
    "favourNonMutablePropertyInitialization": { "enabled": false },
    "favourReRaise": { "enabled": true },
    "favourStaticEmptyFields": { "enabled": false },
    "favourConsistentThis": {
        "enabled": false,
        "config": {
            "symbol": "this"
        }
    },
    "suggestUseAutoProperty": { "enabled": false },
    "avoidTooShortNames": { "enabled": false },
    "asyncExceptionWithoutReturn": { "enabled": false },
    "unneededRecKeyword": { "enabled": true },
    "indentation": {
        "enabled": false
    },
    "maxCharactersOnLine": {
        "enabled": false,
        "config": {
            "maxCharactersOnLine": 120
        }
    },
    "trailingWhitespaceOnLine": {
        "enabled": false,
        "config": {
            "numberOfSpacesAllowed": 1,
            "oneSpaceAllowedAfterOperator": true,
            "ignoreBlankLines": true
        }
    },
    "maxLinesInFile": {
        "enabled": false,
        "config": {
            "maxLinesInFile": 1000
        }
    },
    "trailingNewLineInFile": { "enabled": false },
    "noTabCharacters": { "enabled": true },
    "noPartialFunctions": {
        "enabled": false,
        "config": {
            "allowedPartials": [],
            "additionalPartials": []
        }
    },
    "ensureTailCallDiagnosticsInRecursiveFunctions": { "enabled": false },
    "favourAsKeyword": { "enabled": true },
    "hints": {
        "add": [
            "not (a =  b) ===> a <> b",
            "not (a <> b) ===> a =  b",
            "not (a >  b) ===> a <= b",
            "not (a >= b) ===> a <  b",
            "not (a <  b) ===> a >= b",
            "not (a <= b) ===> a >  b",
            "compare x y <> 1 ===> x <= y",
            "compare x y = -1 ===> x < y",
            "compare x y <> -1 ===> x >= y",
            "compare x y = 1 ===> x > y",
            "compare x y <= 0 ===> x <= y",
            "compare x y <  0 ===> x <  y",
            "compare x y >= 0 ===> x >= y",
            "compare x y >  0 ===> x >  y",
            "compare x y =  0 ===> x =  y",
            "compare x y <> 0 ===> x <> y",

            "List.head (List.sort x) ===> List.min x",
            "List.head (List.sortBy f x) ===> List.minBy f x",

            "List.map f (List.map g x) ===> List.map (g >> f) x",
            "Array.map f (Array.map g x) ===> Array.map (g >> f) x",
            "Seq.map f (Seq.map g x) ===> Seq.map (g >> f) x",
            "List.nth x 0 ===> List.head x",
            "List.map f (List.replicate n x) ===> List.replicate n (f x)",
            "List.rev (List.rev x) ===> x",
            "Array.rev (Array.rev x) ===> x",
            "List.fold (@) [] x ===> List.concat x",
            "List.map id x ===> id x",
            "Array.map id x ===> id x",
            "Seq.map id x ===> id x",
            "(List.length x) = 0 ===> List.isEmpty x",
            "(Array.length x) = 0 ===> Array.isEmpty x",
            "(Seq.length x) = 0 ===> Seq.isEmpty x",
            "x = [] ===> List.isEmpty x",
            "x = [||] ===> Array.isEmpty x",
            "(List.length x) <> 0 ===> not (List.isEmpty x)",
            "(Array.length x) <> 0 ===> not (Array.isEmpty x)",
            "(Seq.length x) <> 0 ===> not (Seq.isEmpty x)",
            "(List.length x) > 0 ===> not (List.isEmpty x)",
            "(Array.length x) <> 0 ===> not (Array.isEmpty x)",
            "(Seq.length x) <> 0 ===> not (Seq.isEmpty x)",

            "List.concat (List.map f x) ===> List.collect f x",
            "Array.concat (Array.map f x) ===> Array.collect f x",
            "Seq.concat (Seq.map f x) ===> Seq.collect f x",

            "List.isEmpty (List.filter f x) ===> not (List.exists f x)",
            "Array.isEmpty (Array.filter f x) ===> not (Array.exists f x)",
            "Seq.isEmpty (Seq.filter f x) ===> not (Seq.exists f x)",
            "not (List.isEmpty (List.filter f x)) ===> List.exists f x",
            "not (Array.isEmpty (Array.filter f x)) ===> Array.exists f x",
            "not (Seq.isEmpty (Seq.filter f x)) ===> Seq.exists f x",

            "List.length x >= 0 ===> true",
            "Array.length x >= 0 ===> true",
            "Seq.length x >= 0 ===> true",

            "x = true ===> x",
            "x = false ===> not x",
            "true = a ===> a",
            "false = a ===> not a",
            "a <> true ===> not a",
            "a <> false ===> a",
            "true <> a ===> not a",
            "false <> a ===> a",
            "if a then true else false ===> a",
            "if a then false else true ===> not a",
            "not (not x) ===> x",

            "(fst x, snd x) ===> x",

            "true && x ===> x",
            "false && x ===> false",
            "true || x ===> true",
            "false || x ===> x",
            "not true ===> false",
            "not false ===> true",
            "fst (x, y) ===> x",
            "snd (x, y) ===> y",
            "List.fold f x [] ===> x",
            "Array.fold f x [||] ===> x",
            "List.foldBack f [] x ===> x",
            "Array.foldBack f [||] x ===> x",
            "x - 0 ===> x",
            "x * 1 ===> x",
            "x / 1 ===> x",

            "List.fold (+) 0 x ===> List.sum x",
            "Array.fold (+) 0 x ===> Array.sum x",
            "Seq.fold (+) 0 x ===> Seq.sum x",
            "List.sum (List.map x y) ===> List.sumBy x y",
            "Array.sum (Array.map x y) ===> Array.sumBy x y",
            "Seq.sum (Seq.map x y) ===> Seq.sumBy x y",
            "List.average (List.map x y) ===> List.averageBy x y",
            "Array.average (Array.map x y) ===> Array.averageBy x y",
            "Seq.average (Seq.map x y) ===> Seq.averageBy x y",
            "(List.take x y, List.skip x y) ===> List.splitAt x y",
            "(Array.take x y, Array.skip x y) ===> Array.splitAt x y",
            "(Seq.take x y, Seq.skip x y) ===> Seq.splitAt x y",

            "List.empty ===> []",
            "Array.empty ===> [||]",

            "x::[] ===> [x]",
            "pattern: x::[] ===> [x]",

            "x @ [] ===> x",

            "List.isEmpty [] ===> true",
            "Array.isEmpty [||] ===> true",

            "fun _ -> () ===> ignore",
            "fun x -> x ===> id",
            "id x ===> x",
            "id >> f ===> f",
            "f >> id ===> f",

            "x = null ===> isNull x",
            "null = x ===> isNull x",
            "x <> null ===> not (isNull x)",
            "null <> x ===> not (isNull x)",

            "Array.append a (Array.append b c) ===> Array.concat [|a; b; c|]"
        ]
    }
}