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