Welcome to mirror list, hosted at ThFree Co, Russian Federation.

Vector.fs « mdoc.Test.FSharp « mdoc.Test « mdoc - github.com/mono/api-doc-tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 300ab45477ab7a230dc0435d15c321eb1616e59e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
module SomeNamespace.SomeModule

// This example is a basic class with (1) local let bindings, (2) properties, (3) methods, and (4) static members.
type Vector(x : float, y : float) =
    let mag = sqrt(x * x + y * y) // (1)
    member this.X = x // (2)
    member this.Y = y
    member this.Mag = mag
    member this.Scale(s) = // (3)
        Vector(x * s, y * s)
    static member (+) (a : Vector, b : Vector) = // (4)
        Vector(a.X + b.X, a.Y + b.Y)


// Declare IVector interface and implement it in Vector'.
type IVector =
    abstract Scale : float -> IVector

type Vector'''(x, y) =
    interface IVector with
        member __.Scale(s) =
            Vector'''(x * s, y * s) :> IVector
    member __.X = x
    member __.Y = y



type Vector2(x, y) =
    interface IVector with
        member __.Scale(s) =
            Vector2(x * s, y * s) :> IVector
    member __.X = x
    member __.Y = y