# F#

To use this language, use the class "language-fsharp".

## Comments

    // Single line comment
    (* Multi-line
    comment *)

## Strings

    "foo \"bar\" baz"
    'foo \'bar\' baz'
    @"Verbatim strings"
    """Alternate "verbatim" strings"""

## Numbers

    //8 bit Int
    86y
    0b00000101y
    //Unsigned 8 bit Int
    86uy
    0b00000101uy
    //16 bit Int
    86s
    //Unsigned 16 bit Int
    86us
    //Int
    86
    86l
    0b10000
    0x2A6
    //Unsigned Int
    86u
    86ul
    //unativeint
    0x00002D3Fun
    //Long
    86L
    //Unsigned Long
    86UL
    //Float
    4.14F
    4.14f
    4.f
    4.F
    0x0000000000000000lf
    //Double
    4.14
    2.3E+32
    2.3e+32
    2.3e-32
    2.3e32
    0x0000000000000000LF
    //BigInt
    9999999999999999999999999999I
    //Decimal
    0.7833M
    0.7833m
    3.m
    3.M

## Full example

    // The declaration creates a constructor that takes two values, name and age.
    type Person(name:string, age:int) =
        // A Person object's age can be changed. The mutable keyword in the
        // declaration makes that possible.
        let mutable internalAge = age

        // Declare a second constructor that takes only one argument, a name.
        // This constructor calls the constructor that requires two arguments,
        // sending 0 as the value for age.
        new(name:string) = Person(name, 0)

        // A read-only property.
        member this.Name = name
        // A read/write property.
        member this.Age
            with get() = internalAge
            and set(value) = internalAge <- value

        // Instance methods.
        // Increment the person's age.
        member this.HasABirthday () = internalAge <- internalAge + 1

        // Check current age against some threshold.
        member this.IsOfAge targetAge = internalAge >= targetAge

        // Display the person's name and age.
        override this.ToString () =
            "Name:  " + name + "\n" + "Age:   " + (string)internalAge

## Known failures

There are certain edge cases where Prism will fail. There are always such cases in every regex-based syntax highlighter. However, Prism dares to be open and honest about them. If a failure is listed here, it doesn’t mean it will never be fixed. This is more of a “known bugs” list, just with a certain type of bug.

### Comment-like substrings

    "foo (* bar *) baz"; "foo // bar";