100 FSharp exercises
This is FSharp version of 100 numpy exercises
Latest version of 100 numpy excercises are available at this repository.
The source of this document is available at https://github.com/teramonagi/fsharp-100-exercises . And your pull request is always welcome!!!
In this document, F# core library and Math.NET Numerics are used.
Neophyte
1. Import the numpy package under the name np
We use Math.NET Numerics libraries instead of numpy.
1: 2: 3: 4: |
open MathNet.Numerics.LinearAlgebra open MathNet.Numerics.LinearAlgebra.Double open MathNet.Numerics.Statistics open MathNet.Numerics.Data.Text; |
2. Print the Fsharp version and the configuration.
1:
|
printfn "%A" (System.Reflection.Assembly.GetExecutingAssembly().ImageRuntimeVersion) |
|
3. Create a null vector of size 10
F# Core Library
1: 2: |
let Z = Array.zeroCreate<float>(10) printfn "%A" Z |
|
Math.NET Numerics
1: 2: |
let Z = DenseVector.zero<float>(10) printfn "%A" (Z.ToArray()) |
|
4. Create a null vector of size 10 but the fifth value which is 1
F# Core Library
1: 2: 3: |
let Z = Array.zeroCreate<float>(10) Z.[4] <- 1.0 printfn "%A" Z |
|
Math.NET Numerics
1: 2: 3: |
let Z = DenseVector.zero<float>(10) Z.[4] <- 1.0 printfn "%A" (Z.ToArray()) |
|
5. Create a vector with values ranging from 10 to 49
F# Core Library
1: 2: |
let Z = (Array.init 40 (fun index -> index+10)) printfn "%A" Z |
|
Math.NET Numerics
1: 2: |
let Z = DenseVector.range 10 1 49 printfn "%A" (Z.ToArray()) |
|
6. Create a 3x3 matrix with values ranging from 0 to 8
F# Core Library
1: 2: |
let Z = Array2D.init 3 3 (fun i j -> 3*i + j) printfn "%A" Z |
|
Math.NET Numerics
1: 2: |
let Z = DenseMatrix.init 3 3 (fun i j -> float i * 3.0 + float j) printfn "%A" (Z.ToArray()) |
|
7. Find indices of non-zero elements from [1,2,0,0,4,0]
F# Core Library
1: 2: |
let Z = [|1; 2; 0; 0; 4; 0|] |> Array.mapi (fun i x -> (x<>0, i)) |> Array.filter fst |> Array.map snd printfn "%A" Z |
|
...Or, you can write as the following:
1: 2: |
let Z = [|1; 2; 0; 0; 4; 0|] |> Array.mapi (fun i x -> (x<>0, i)) |> Array.choose (fun x -> if fst x then Some(snd x) else None) printfn "%A" Z |
|
Math.NET Numerics
You can use "Find" method implemented in Vector class directly if you can use MathNet.Numerics.FSharp 3.6.0. (My current MathNet.Numerics(.FSharp) is 3.5.0...)
1: 2: 3: |
let Z = vector [1.; 2.; 0.; 0.; 4.; 0.] |> Vector.foldi (fun i x y -> if y <> 0.0 then Array.append x [|y|] else x) [||] printfn "%A" Z |
|
8. Create a 3x3 identity matrix
F# Core Library
1: 2: |
let Z = Array2D.init 3 3 (fun i j -> if i=j then 1 else 0) printfn "%A" Z |
|
Math.NET Numerics
1: 2: |
let Z = DenseMatrix.identity<float> 3 printfn "%A" Z |
|
9. Create a 5x5 matrix with values 1,2,3,4 just below the diagonal
F# Core Library
1: 2: |
let Z = Array2D.init 5 5 (fun i j -> if (i=j+1) then i else 0) printfn "%A" Z |
|
Math.NET Numerics
1: 2: |
let Z = DenseMatrix.init 5 5 (fun i j -> if (i=j+1) then float i else 0.0) printfn "%A" Z |
|
10. Create a 3x3x3 array with random values
F# Core Library
1: 2: 3: 4: 5: 6: 7: 8: |
let rand = System.Random() let Z = Array3D.init<float> 3 3 3 (fun _ _ _ -> rand.NextDouble()) for z in [0..2] do printfn "component: %d" z for y in [0..2] do for x in [0..2] do printf "%f" Z.[x, y, z] printfn "" |
|
...or, since there is no strong support for Array3D class in F#, you may write the following :
1: 2: 3: 4: 5: |
let rand = System.Random() let Z = Array.init 3 (fun z -> Array2D.init<float> 3 3 (fun _ _ -> rand.NextDouble())) for z in [0..2] do printfn "component: %d" z printfn "%A" Z.[z] |
|
Math.NET Numerics
1: 2: 3: 4: 5: 6: |
//I used the type "Array of DenseMatix" here because there is no 3D Vector in core Math.NET. let rand = new MathNet.Numerics.Distributions.ContinuousUniform() let Z = Array.init 3 (fun _ -> DenseMatrix.random<float> 3 3 rand) for z in [0..2] do printfn "component: %d" z printfn "%A" Z.[z] |
|
Novice
1. Create a 8x8 matrix and fill it with a checkerboard pattern
F# Core Library
1: 2: |
let Z = Array2D.init 8 8 (fun i j -> (i+j)%2) printfn "%A" Z |
|
Math.NET Numerics
1: 2: |
let Z = DenseMatrix.init 8 8 (fun i j -> float ((i+j)%2)) printfn "%A" Z |
|
2. Create a 10x10 array with random values and find the minimum and maximum values
F# Core Library
1: 2: 3: 4: 5: |
let rand = System.Random() let Z = Array2D.init 10 10 (fun i j -> rand.NextDouble()) let Zmin = Z |> Seq.cast<float> |> Seq.min let Zmax = Z |> Seq.cast<float> |> Seq.max printfn "%f, %f" Zmin Zmax |
|
Math.NET Numerics
1: 2: 3: 4: 5: |
let rand = new MathNet.Numerics.Distributions.ContinuousUniform() let Z = DenseMatrix.random<float> 10 10 rand let Zmin = Matrix.reduce min Z let Zmax = Matrix.reduce max Z printfn "%f, %f" Zmin Zmax |
|
3. Create a checkerboard 8x8 matrix using the tile function
There is no numpy's tile equivalent function in F# and Math.NET. These are another solutions for Novice 1.
F# Core Library
1: 2: |
let Z = Array.init 8 (fun i -> Array.init 8 (fun j -> (i+j)%2)) |> array2D printfn "%A" Z |
|
Math.NET Numerics
1: 2: 3: |
let seq01 = Seq.initInfinite (fun i -> float(i%2)) let Z = DenseMatrix.initColumns 8 (fun i -> seq01 |> Seq.skip i |> Seq.take 8 |> DenseVector.ofSeq) printfn "%A" Z |
|
4. Normalize a 5x5 random matrix (between 0 and 1)
F# Core Library
1: 2: 3: 4: 5: 6: |
let rand = System.Random() let Z = Array2D.init 5 5 (fun i j -> rand.NextDouble()) let Zmin = Z |> Seq.cast<float> |> Seq.min let Zmax = Z |> Seq.cast<float> |> Seq.max let Z2 = Z |> Array2D.map (fun z -> (z-Zmin)/(Zmax-Zmin)) printfn "%A" Z2 |
|
Math.NET Numerics
1: 2: 3: 4: 5: 6: |
let rand = new MathNet.Numerics.Distributions.ContinuousUniform() let Z = DenseMatrix.random<float> 5 5 rand let Zmin = Matrix.reduce min Z let Zmax = Matrix.reduce max Z let Z2 = Matrix.map (fun z -> (z-Zmin)/(Zmax-Zmin) ) Z printfn "%A" Z2 |
|
5. Multiply a 5x3 matrix by a 3x2 matrix (real matrix product)
F# Core Library
1: 2: 3: 4: 5: |
let x = Array2D.create 5 3 1.0 let y = Array2D.create 3 2 1.0 let inner_product x y = Array.fold2 (fun s x y -> s+x*y) 0.0 x y let Z = Array2D.init 5 2 (fun i j -> inner_product x.[i,*] y.[*,j] ) printfn "%A" Z |
|
Math.NET Numerics
1: 2: |
let Z = (DenseMatrix.create 5 3 1.0) * (DenseMatrix.create 3 2 1.0) printfn "%A" Z |
|
6. Create a 5x5 matrix with row values ranging from 0 to 4
F# Core Library
1: 2: |
let Z = Array2D.init 5 5 (fun i j -> j) printfn "%A" Z |
|
Math.NET Numerics
1: 2: |
let Z = DenseMatrix.init 5 5 (fun i j -> float j) printfn "%A" Z |
|
7. Create a vector of size 10 with values ranging from 0 to 1, both excluded
It it little bit different from numpy's answer because there is no equivalent method with numpy's linspace in F#/Math.NET.
F# Core Library
1: 2: 3: |
let Z = Array.init 12 (fun i -> 1.0/11.0*(float i)) let Z2 = Array.sub Z 1 10 printfn "%A" Z2 |
|
Math.NET Numerics
1: 2: |
let Z = (DenseVector.rangef 0.0 (1.0/11.0) 1.0).SubVector(1, 10) printfn "%A" Z |
|
8. Create a random vector of size 10 and sort it
F# Core Library
1: 2: 3: |
let rand = System.Random() let Z = Array.init 10 (fun _ -> rand.NextDouble()) |> Array.sort printfn "%A" Z |
|
Math.NET Numerics
1: 2: 3: 4: |
let rand = new MathNet.Numerics.Distributions.ContinuousUniform() let Z = DenseVector.random<float> 10 rand MathNet.Numerics.Sorting.Sort(Z) printfn "%A" Z |
|
9. Consider two random array A anb B, check if they are equal.
F# Core Library
1: 2: 3: 4: 5: |
let rand = System.Random() let A = Array.init 5 (fun _ -> rand.Next(2)) let B = Array.init 5 (fun _ -> rand.Next(2)) let equal = Array.forall2 (=) A B printfn "%A" equal |
|
Math.NET Numerics
1: 2: 3: 4: 5: |
let rand = new MathNet.Numerics.Distributions.DiscreteUniform(0, 1) let A = rand.Samples() |> Seq.take 5 |> Seq.map float |> DenseVector.ofSeq let B = rand.Samples() |> Seq.take 5 |> Seq.map float |> DenseVector.ofSeq let equal = A=B printfn "%A" equal |
|
10. Create a random vector of size 30 and find the mean value
F# Core Library
1: 2: 3: 4: |
let rand = System.Random() let Z = Array.init 30 (fun _ -> rand.NextDouble()) let m = Z |> Array.average printfn "%f" m |
|
Math.NET Numerics
1: 2: 3: 4: |
let rand = new MathNet.Numerics.Distributions.ContinuousUniform() let Z = DenseVector.random<float> 30 rand let m = Z |> Statistics.Mean printfn "%f" m |
|
Apprentice
1. Make an array immutable (read-only)
F# Core Library
1: 2: 3: 4: |
//List is immutable in F# but it does not allow us to do random access. let Z = List.init 10 (fun _ -> 0) //It does not work. //Z.[0] <- 1 |
Math.NET Numerics
1:
|
//There is no way to make an array immutable.
|
2. Consider a random 10x2 matrix representing cartesian coordinates, convert them to polar coordinates
F# Core Library
1: 2: 3: 4: 5: 6: 7: |
let rand = System.Random() let Z = Array2D.init 10 2 (fun _ _ -> rand.NextDouble()) let X, Y = Z.[*,0], Z.[*,1] let R = Array.map2 (fun x y -> sqrt(x*x+y*y)) X Y let T = Array.map2 (fun x y -> System.Math.Atan2(y, x)) X Y printfn "%A" R printfn "%A" T |
|
Math.NET Numerics
1: 2: 3: 4: 5: 6: 7: |
let rand = new MathNet.Numerics.Distributions.ContinuousUniform() let Z = DenseMatrix.random<float> 10 2 rand let X, Y = Z.[*,0], Z.[*,1] let R = X.*X + Y.*Y |> Vector.map sqrt let T = Y./X |> Vector.map System.Math.Atan printfn "%A" R printfn "%A" T |
|
3. Create random vector of size 10 and replace the maximum value by 0
F# Core Library
1: 2: 3: 4: 5: |
let rand = System.Random() let Z = Array.init 10 (fun _ -> rand.NextDouble()) let Zmax = Array.max Z Z.[Array.findIndex ((=) Zmax) Z] <- 0. printfn "%A" Z |
|
Math.NET Numerics
1: 2: 3: 4: |
let rand = MathNet.Numerics.Distributions.ContinuousUniform() let Z = DenseVector.random<float> 10 rand Z.[Vector.maxIndex Z] <- 0. printfn "%A" Z |
|
4. Create a structured array with x
and y
coordinates covering the [0,1]x[0,1] area.
There is no way to assign name to Array2D/Matrix. We might should use Deedle in this situation.
F# Core Library
1: 2: 3: |
let element = Array.init 10 (fun i -> 1.0/9.0*(float i)) let Z = Array2D.init 10 10 (fun i j -> (element.[j], element.[i])) printfn "%A" Z |
|
Math.NET Numerics
1: 2: 3: 4: |
//We can not use the type Matrix<(float, float)> type as a output. let element = DenseVector.rangef 0.0 (1.0/9.0) 1.0 let Z = Array2D.init 10 10 (fun i j -> (element.[j], element.[i])) printfn "%A" Z |
|
5. Print the minimum and maximum representable value for each numpy scalar type
These are not types but functions for type conversion like int8, float32 in the below codes. I used these functions to get its type with Reflection.
1: 2: 3: 4: |
[int8.GetType(); int32.GetType(); int64.GetType()] |> List.iter (fun x -> printfn "%A" (x.BaseType.GenericTypeArguments.[1].GetField("MinValue").GetValue()) printfn "%A" (x.BaseType.GenericTypeArguments.[1].GetField("MaxValue").GetValue())) |
|
1: 2: 3: 4: 5: |
[float32.GetType(); float.GetType()] |> List.iter (fun x -> printfn "%A" (x.BaseType.GenericTypeArguments.[1].GetField("MinValue").GetValue()) printfn "%A" (x.BaseType.GenericTypeArguments.[1].GetField("MaxValue").GetValue()) printfn "%A" (x.BaseType.GenericTypeArguments.[1].GetField("Epsilon").GetValue())) |
|
6. Create a structured array representing a position (x,y) and a color (r,g,b)
There is no way to assign name to Array2D/Matrix. We might should use Deedle in this situation. The code I showed below is not so looks good to me...
1: 2: 3: 4: 5: 6: 7: 8: |
type NamedSequence<'T> = System.Collections.Generic.IDictionary<string, 'T> let Z = Array.init 10 (fun i -> dict[ "position", dict["x", 0.0; "y", 0.0]; "color", dict["r", 0.0; "g", 0.0; "b", 0.0] ] ) printfn "%A" (Array.map (fun (z:NamedSequence<NamedSequence<float>>) -> z.["color"]) Z) |
|
7. Consider a random vector with shape (100,2) representing coordinates, find point by point distances
We use 10 row cases to reduce the output.
F# Core Library
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: |
let rand = System.Random() let product xs ys = [| for x in xs do for y in ys -> (x, y)|] let distance (x: float*float) (y: float*float) = let dx = fst x - snd x let dy = fst y - snd y sqrt(dx*dx+dy*dy) let Z = Array2D.init 10 2 (fun _ _ -> rand.NextDouble()) let X, Y = Z.[*,0], Z.[*,1] let xs = (product X X) let ys = (product Y Y) let D = Array.map2 distance xs ys printfn "%A" (Array2D.init 10 10 (fun i j -> D.[i + j*10])) |
|
Math.NET Numerics
1: 2: 3: 4: |
let rand = new MathNet.Numerics.Distributions.ContinuousUniform() let Z = DenseMatrix.random<float> 10 2 rand let X, Y = Z.[*,0], Z.[*,1] printfn "%A" (DenseMatrix.Create(10, 10, (fun i j -> sqrt((X.[i]-X.[j])**2.0 + (Y.[i]-Y.[j])**2.0)))) |
|
8. Generate a generic 2D Gaussian-like array
F# Core Library
1: 2: 3: 4: 5: 6: |
let element = Array.init 10 (fun i -> -1.0 + 1.0/4.5*(float i)) let Z = Array2D.init 10 10 (fun i j -> (element.[j], element.[i])) |> Seq.cast<float*float> |> Array.ofSeq let D = Array.map (fun z -> sqrt( (fst z)**2.0 + (snd z)**2.0 )) Z let sigma, mu = 1.0, 0.0 let G = Array.map (fun d -> exp((d-mu)**2.0/(-2.0*sigma**2.0))) D printfn "%A" G |
|
Math.NET Numerics
1: 2: 3: 4: 5: 6: 7: 8: |
let element = Array.init 10 (fun i -> -1.0 + 1.0/4.5*(float i)) let Z = Array2D.init 10 10 (fun i j -> (element.[j], element.[i])) |> Seq.cast<float*float> |> Array.ofSeq let D = DenseVector.init 100 (fun i -> sqrt( (fst Z.[i])**2.0 + (snd Z.[i])**2.0 )) let sigma, mu = 1.0, 0.0 let G = D.Subtract(mu).PointwisePower(2.0).Divide(-2.0*sigma**2.0).PointwiseExp() //... Or more simply //let G = Vector.map (fun d -> exp((d-mu)**2.0/(-2.0*sigma**2.0))) D printfn "%A" G |
|
9. How to tell if a given 2D array has null columns ?
F# Core Library
1: 2: 3: 4: 5: 6: 7: 8: |
//First, We extend Array2D module to add foldByColumn module Array2D = let foldByColumn folder state array = let size = Array2D.length2 array - 1 [|for col in [0..size] -> array.[*, col] |> Array.fold folder state|] //Sample data let Z = array2D [|[|1.0; nan; nan; nan; 2.0;|]; [|1.0; 2.0; 3.0; 4.0; 5.0|]|] printfn "%A" (Z |> Array2D.foldByColumn (fun x y -> x || System.Double.IsNaN(y)) false) |
|
Math.NET Numerics
1: 2: 3: 4: 5: 6: |
let Z = matrix [[1.0; nan; nan; nan; 2.0;]; [1.0; 2.0; 3.0; 4.0; 5.0]] printfn "%A" (Z |> Matrix.foldByCol(fun x y -> x + System.Convert.ToDouble(System.Double.IsNaN(y))) 0.0 |> Seq.cast<float> |> Seq.toArray |> Array.map (fun x -> System.Convert.ToBoolean(x))) |
|
10. Find the nearest value from a given value in an array
F# Core Library
1: 2: 3: 4: |
let rand = System.Random() let Z = Array.init<float> 10(fun _ -> rand.NextDouble()) let z = 0.5 Seq.minBy (fun x -> abs (x-z)) Z |> printfn "%A" |
|
Math.NET Numerics
1: 2: 3: |
let rand = new MathNet.Numerics.Distributions.ContinuousUniform() let Z = DenseVector.random<float> 10 rand Z.[Vector.minAbsIndex(Z - z)] |> printfn "%A" |
|
Journeyman
1. Consider the following file:
1: 2: 3: |
1,2,3,4,5 6,,,7,8 ,,9,10,11 |
How to read it ?
I used build-in functions(System.IO etc) and Math.Net Numerics Data Text here. It is a good idea to use F# Data: CSV Type Provider instead of these strategies.
F# Core Library
1: 2: 3: |
let Z = System.IO.File.ReadAllLines "missing.dat" |> Array.map (fun z -> z.Split ',') printfn "%A" Z |
|
Math.NET Numerics
1: 2: |
let Z = DelimitedReader.Read<double>( "missing.dat", false, ",", false); printfn "%A" Z |
|
2. Consider a generator function that generates 10 integers and use it to build an array
F# Core Library
1: 2: 3: 4: 5: 6: 7: |
let generate() = seq { 0..10 } //or //let generate() = seq { for i in 0..9 do yield i} //or //let generate() = seq { for i in 0..9 -> i} let Z = generate() |> Array.ofSeq printfn "%A" Z |
|
Math.NET Numerics
1: 2: 3: |
let generate() = seq { for i in 0..9 -> float i} let Z = generate() |> DenseVector.ofSeq printfn "%A" Z |
|
3. Consider a given vector, how to add 1 to each element indexed by a second vector (be careful with repeated indices) ?
F# Core Library
(Not so good code...)
1: 2: 3: 4: 5: |
let rand = System.Random() let Z = Array.create 10 1 let I = Array.init 20 (fun _ -> rand.Next(Array.length Z)) I |> Seq.countBy id |> Seq.iter (fun i -> Z.[fst i] <- Z.[fst i] + snd i) printfn "%A" Z |
|
Math.NET Numerics
It is difficult to write with Math.NET for me...
4. How to accumulate elements of a vector (X) to an array (F) based on an index list (I) ?
F# Core Library
1: 2: 3: 4: 5: |
let X = [|1; 2; 3; 4; 5; 6|] let I = [|1; 3; 9; 3; 4; 1|] let F = Array.zeroCreate<int> (Array.max I + 1) Array.zip I X |> Array.iter (fun x -> F.[fst x] <- F.[fst x] + snd x) printfn "%A" F |
|
Math.NET Numerics
It is difficult to write with Math.NET for me...
5. Considering a (w,h,3) image of (dtype=ubyte), compute the number of unique colors
F# Core Library
1: 2: 3: 4: 5: 6: |
let rand = System.Random() let w, h = 16, 16 let I = Array.init 3 (fun _ -> Array2D.init w h (fun _ _ -> rand.Next(2))) let F = I |> Array.mapi (fun i x -> Array2D.map ((*) (int (256.0**(float i)))) x) let n = (F |> Array.map (fun x -> x |> Seq.cast<int> |> Seq.distinct |> Set.ofSeq) |> Array.reduce Set.union) |> Set.count printfn "%A" (I |> Array.map (fun x -> x |> Seq.cast<int> |> Seq.distinct |> Set.ofSeq) |> Array.reduce Set.intersect) |
|
Math.NET Numerics
6. Considering a four dimensions array, how to get sum over the last two axis at once ?
F# Core Library
1: 2: 3: 4: |
let rand = System.Random() let A = Array.init 3 (fun _ -> Array.init 4 (fun _ -> Array2D.init 3 4 (fun _ _ -> rand.Next(10)))) let sum = A |> Array.map (fun a -> Array.map (Seq.cast<int> >> Seq.sum) a) printfn "%A" sum |
|
Math.NET Numerics
7. Considering a one-dimensional vector D, how to compute means of subsets of D using a vector S of same size describing subset indices ?
F# Core Library
1: 2: 3: 4: 5: |
let rand = System.Random() let D = Array.init 100 (fun _ -> rand.NextDouble()) let S = Array.init 100 (fun _ -> rand.Next(10)) let D_means = Seq.zip S D |> Seq.groupBy (fun pair -> fst pair) |> Seq.map (fun (key, value) -> Seq.averageBy snd value ) printfn "%A" D_means |
|
... To be continued.
static member CommandLine : string
static member CurrentDirectory : string with get, set
static member Exit : exitCode:int -> unit
static member ExitCode : int with get, set
static member ExpandEnvironmentVariables : name:string -> string
static member FailFast : message:string -> unit + 1 overload
static member GetCommandLineArgs : unit -> string[]
static member GetEnvironmentVariable : variable:string -> string + 1 overload
static member GetEnvironmentVariables : unit -> IDictionary + 1 overload
static member GetFolderPath : folder:SpecialFolder -> string + 1 overload
...
nested type SpecialFolder
nested type SpecialFolderOption
Full name: System.Environment
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.printfn
member CodeBase : string
member CreateInstance : typeName:string -> obj + 2 overloads
member EntryPoint : MethodInfo
member Equals : o:obj -> bool
member EscapedCodeBase : string
member Evidence : Evidence
member FullName : string
member GetCustomAttributes : inherit:bool -> obj[] + 1 overload
member GetCustomAttributesData : unit -> IList<CustomAttributeData>
member GetExportedTypes : unit -> Type[]
...
Full name: System.Reflection.Assembly
Full name: Fsharp-100-exercises.Z
from Microsoft.FSharp.Collections
Full name: Microsoft.FSharp.Collections.Array.zeroCreate
val float : value:'T -> float (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.float
--------------------
type float = System.Double
Full name: Microsoft.FSharp.Core.float
--------------------
type float<'Measure> = float
Full name: Microsoft.FSharp.Core.float<_>
Full name: Fsharp-100-exercises.Z
type DenseVector =
inherit Vector
new : storage:DenseVectorStorage<float> -> DenseVector + 2 overloads
member AbsoluteMaximum : unit -> float
member AbsoluteMaximumIndex : unit -> int
member AbsoluteMinimum : unit -> float
member AbsoluteMinimumIndex : unit -> int
member InfinityNorm : unit -> float
member L1Norm : unit -> float
member L2Norm : unit -> float
member MaximumIndex : unit -> int
member MinimumIndex : unit -> int
...
Full name: MathNet.Numerics.LinearAlgebra.Double.DenseVector
--------------------
DenseVector(storage: Storage.DenseVectorStorage<float>) : unit
DenseVector(length: int) : unit
DenseVector(storage: float []) : unit
Full name: MathNet.Numerics.LinearAlgebra.DenseVector.zero
Full name: Fsharp-100-exercises.Z
Full name: Microsoft.FSharp.Collections.Array.init
Full name: MathNet.Numerics.LinearAlgebra.DenseVector.range
Full name: Fsharp-100-exercises.Z
from Microsoft.FSharp.Collections
Full name: Microsoft.FSharp.Collections.Array2D.init
Full name: Fsharp-100-exercises.Z
type DenseMatrix =
inherit Matrix
new : storage:DenseColumnMajorMatrixStorage<float> -> DenseMatrix + 3 overloads
member Cholesky : unit -> Cholesky<float>
member Evd : ?symmetricity:Symmetricity -> Evd<float>
member FrobeniusNorm : unit -> float
member GramSchmidt : unit -> GramSchmidt<float>
member InfinityNorm : unit -> float
member IsSymmetric : unit -> bool
member L1Norm : unit -> float
member LU : unit -> LU<float>
member QR : ?method:QRMethod -> QR<float>
...
Full name: MathNet.Numerics.LinearAlgebra.Double.DenseMatrix
--------------------
DenseMatrix(storage: Storage.DenseColumnMajorMatrixStorage<float>) : unit
DenseMatrix(order: int) : unit
DenseMatrix(rows: int, columns: int) : unit
DenseMatrix(rows: int, columns: int, storage: float []) : unit
Full name: MathNet.Numerics.LinearAlgebra.DenseMatrix.init
Full name: Microsoft.FSharp.Collections.Array.mapi
Full name: Microsoft.FSharp.Collections.Array.filter
Full name: Microsoft.FSharp.Core.Operators.fst
Full name: Microsoft.FSharp.Collections.Array.map
Full name: Microsoft.FSharp.Core.Operators.snd
Full name: Microsoft.FSharp.Collections.Array.choose
Full name: MathNet.Numerics.LinearAlgebra.VectorExtensions.vector
type Vector =
inherit Vector<float>
member AbsoluteMaximum : unit -> float
member AbsoluteMaximumIndex : unit -> int
member AbsoluteMinimum : unit -> float
member AbsoluteMinimumIndex : unit -> int
member CoerceZero : threshold:float -> unit
member InfinityNorm : unit -> float
member L1Norm : unit -> float
member L2Norm : unit -> float
member MaximumIndex : unit -> int
member MinimumIndex : unit -> int
...
Full name: MathNet.Numerics.LinearAlgebra.Double.Vector
--------------------
type Vector<'T (requires default constructor and value type and 'T :> ValueType and 'T :> IEquatable<'T> and 'T :> IFormattable)> =
member AbsoluteMaximum : unit -> 'T
member AbsoluteMaximumIndex : unit -> int
member AbsoluteMinimum : unit -> 'T
member AbsoluteMinimumIndex : unit -> int
member Add : scalar:'T -> Vector<'T> + 3 overloads
member At : index:int -> 'T + 1 overload
member Clear : unit -> unit
member ClearSubVector : index:int * count:int -> unit
member Clone : unit -> Vector<'T>
member CoerceZero : threshold:float -> unit + 1 overload
...
Full name: MathNet.Numerics.LinearAlgebra.Vector<_>
Full name: MathNet.Numerics.LinearAlgebra.Vector.foldi
Full name: Microsoft.FSharp.Collections.Array.append
Full name: MathNet.Numerics.LinearAlgebra.DenseMatrix.identity
Full name: Fsharp-100-exercises.rand
type Random =
new : unit -> Random + 1 overload
member Next : unit -> int + 2 overloads
member NextBytes : buffer:byte[] -> unit
member NextDouble : unit -> float
Full name: System.Random
--------------------
System.Random() : unit
System.Random(Seed: int) : unit
Full name: Fsharp-100-exercises.Z
from Microsoft.FSharp.Collections
Full name: Microsoft.FSharp.Collections.Array3D.init
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.printf
Full name: Fsharp-100-exercises.Z
Full name: Fsharp-100-exercises.rand
type ContinuousUniform =
new : unit -> ContinuousUniform + 2 overloads
member CumulativeDistribution : x:float -> float
member Density : x:float -> float
member DensityLn : x:float -> float
member Entropy : float
member InverseCumulativeDistribution : p:float -> float
member LowerBound : float
member Maximum : float
member Mean : float
member Median : float
...
Full name: MathNet.Numerics.Distributions.ContinuousUniform
--------------------
MathNet.Numerics.Distributions.ContinuousUniform() : unit
MathNet.Numerics.Distributions.ContinuousUniform(lower: float, upper: float) : unit
MathNet.Numerics.Distributions.ContinuousUniform(lower: float, upper: float, randomSource: System.Random) : unit
Full name: Fsharp-100-exercises.Z
Full name: MathNet.Numerics.LinearAlgebra.DenseMatrix.random
Full name: Fsharp-100-exercises.Z
Full name: Fsharp-100-exercises.Zmin
from Microsoft.FSharp.Collections
Full name: Microsoft.FSharp.Collections.Seq.cast
Full name: Microsoft.FSharp.Collections.Seq.min
Full name: Fsharp-100-exercises.Zmax
Full name: Microsoft.FSharp.Collections.Seq.max
type Matrix =
inherit Matrix<float>
member Cholesky : unit -> Cholesky<float>
member CoerceZero : threshold:float -> unit
member ColumnAbsoluteSums : unit -> Vector<float>
member ColumnNorms : norm:float -> Vector<float>
member ColumnSums : unit -> Vector<float>
member ConjugateTranspose : unit -> Matrix<float>
member Evd : ?symmetricity:Symmetricity -> Evd<float>
member FrobeniusNorm : unit -> float
member GramSchmidt : unit -> GramSchmidt<float>
member InfinityNorm : unit -> float
...
Full name: MathNet.Numerics.LinearAlgebra.Double.Matrix
--------------------
type Matrix<'T (requires default constructor and value type and 'T :> ValueType and 'T :> IEquatable<'T> and 'T :> IFormattable)> =
member Add : scalar:'T -> Matrix<'T> + 3 overloads
member Append : right:Matrix<'T> -> Matrix<'T> + 1 overload
member At : row:int * column:int -> 'T + 1 overload
member Cholesky : unit -> Cholesky<'T>
member Clear : unit -> unit
member ClearColumn : columnIndex:int -> unit
member ClearColumns : params columnIndices:int[] -> unit
member ClearRow : rowIndex:int -> unit
member ClearRows : params rowIndices:int[] -> unit
member ClearSubMatrix : rowIndex:int * rowCount:int * columnIndex:int * columnCount:int -> unit
...
Full name: MathNet.Numerics.LinearAlgebra.Matrix<_>
Full name: MathNet.Numerics.LinearAlgebra.Matrix.reduce
Full name: Microsoft.FSharp.Core.Operators.min
Full name: Microsoft.FSharp.Core.Operators.max
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.array2D
Full name: Fsharp-100-exercises.seq01
Full name: Microsoft.FSharp.Collections.Seq.initInfinite
Full name: MathNet.Numerics.LinearAlgebra.DenseMatrix.initColumns
Full name: Microsoft.FSharp.Collections.Seq.skip
Full name: Microsoft.FSharp.Collections.Seq.take
Full name: MathNet.Numerics.LinearAlgebra.DenseVector.ofSeq
Full name: Fsharp-100-exercises.Z2
Full name: Microsoft.FSharp.Collections.Array2D.map
Full name: Fsharp-100-exercises.Z2
Full name: MathNet.Numerics.LinearAlgebra.Matrix.map
Full name: Fsharp-100-exercises.x
Full name: Microsoft.FSharp.Collections.Array2D.create
Full name: Fsharp-100-exercises.y
Full name: Fsharp-100-exercises.inner_product
Full name: Microsoft.FSharp.Collections.Array.fold2
Full name: MathNet.Numerics.LinearAlgebra.DenseMatrix.create
Full name: Fsharp-100-exercises.Z2
Full name: Microsoft.FSharp.Collections.Array.sub
Full name: MathNet.Numerics.LinearAlgebra.DenseVector.rangef
Full name: Microsoft.FSharp.Collections.Array.sort
Full name: MathNet.Numerics.LinearAlgebra.DenseVector.random
static member Sort<'T> : keys:IList<'T> * ?comparer:IComparer<'T> -> unit + 5 overloads
static member SortAll<'T1, 'T2> : primary:IList<'T1> * secondary:IList<'T2> * ?primaryComparer:IComparer<'T1> * ?secondaryComparer:IComparer<'T2> -> unit
Full name: MathNet.Numerics.Sorting
MathNet.Numerics.Sorting.Sort<'TKey,'TItem>(keys: System.Collections.Generic.IList<'TKey>, items: System.Collections.Generic.IList<'TItem>, ?comparer: System.Collections.Generic.IComparer<'TKey>) : unit
MathNet.Numerics.Sorting.Sort<'T>(keys: System.Collections.Generic.IList<'T>, index: int, count: int, ?comparer: System.Collections.Generic.IComparer<'T>) : unit
MathNet.Numerics.Sorting.Sort<'TKey,'TItem1,'TItem2>(keys: System.Collections.Generic.IList<'TKey>, items1: System.Collections.Generic.IList<'TItem1>, items2: System.Collections.Generic.IList<'TItem2>, ?comparer: System.Collections.Generic.IComparer<'TKey>) : unit
MathNet.Numerics.Sorting.Sort<'TKey,'TItem>(keys: System.Collections.Generic.IList<'TKey>, items: System.Collections.Generic.IList<'TItem>, index: int, count: int, ?comparer: System.Collections.Generic.IComparer<'TKey>) : unit
MathNet.Numerics.Sorting.Sort<'TKey,'TItem1,'TItem2>(keys: System.Collections.Generic.IList<'TKey>, items1: System.Collections.Generic.IList<'TItem1>, items2: System.Collections.Generic.IList<'TItem2>, index: int, count: int, ?comparer: System.Collections.Generic.IComparer<'TKey>) : unit
Full name: Fsharp-100-exercises.A
System.Random.Next(maxValue: int) : int
System.Random.Next(minValue: int, maxValue: int) : int
Full name: Fsharp-100-exercises.B
Full name: Fsharp-100-exercises.equal
Full name: Microsoft.FSharp.Collections.Array.forall2
Full name: Fsharp-100-exercises.rand
type DiscreteUniform =
new : lower:int * upper:int -> DiscreteUniform + 1 overload
member CumulativeDistribution : x:float -> float
member Entropy : float
member LowerBound : int
member Maximum : int
member Mean : float
member Median : float
member Minimum : int
member Mode : int
member Probability : k:int -> float
...
Full name: MathNet.Numerics.Distributions.DiscreteUniform
--------------------
MathNet.Numerics.Distributions.DiscreteUniform(lower: int, upper: int) : unit
MathNet.Numerics.Distributions.DiscreteUniform(lower: int, upper: int, randomSource: System.Random) : unit
Full name: Fsharp-100-exercises.A
MathNet.Numerics.Distributions.DiscreteUniform.Samples(values: int []) : unit
Full name: Microsoft.FSharp.Collections.Seq.map
Full name: Fsharp-100-exercises.B
Full name: Fsharp-100-exercises.m
Full name: Microsoft.FSharp.Collections.Array.average
static member Covariance : samples1:IEnumerable<float> * samples2:IEnumerable<float> -> float + 1 overload
static member EmpiricalCDF : data:IEnumerable<float> * x:float -> float + 1 overload
static member EmpiricalCDFFunc : data:IEnumerable<float> -> Func<float, float> + 1 overload
static member EmpiricalInvCDF : data:IEnumerable<float> * tau:float -> float + 1 overload
static member EmpiricalInvCDFFunc : data:IEnumerable<float> -> Func<float, float> + 1 overload
static member Entropy : data:IEnumerable<float> -> float + 1 overload
static member FiveNumberSummary : data:IEnumerable<float> -> float[] + 1 overload
static member InterquartileRange : data:IEnumerable<float> -> float + 1 overload
static member Kurtosis : samples:IEnumerable<float> -> float + 1 overload
static member LowerQuartile : data:IEnumerable<float> -> float + 1 overload
...
Full name: MathNet.Numerics.Statistics.Statistics
Statistics.Mean(data: System.Collections.Generic.IEnumerable<float>) : float
Full name: Fsharp-100-exercises.Z
module List
from Microsoft.FSharp.Collections
--------------------
type List<'T> =
| ( [] )
| ( :: ) of Head: 'T * Tail: 'T list
interface IEnumerable
interface IEnumerable<'T>
member Head : 'T
member IsEmpty : bool
member Item : index:int -> 'T with get
member Length : int
member Tail : 'T list
static member Cons : head:'T * tail:'T list -> 'T list
static member Empty : 'T list
Full name: Microsoft.FSharp.Collections.List<_>
Full name: Microsoft.FSharp.Collections.List.init
Full name: Fsharp-100-exercises.X
Full name: Fsharp-100-exercises.Y
Full name: Fsharp-100-exercises.R
Full name: Microsoft.FSharp.Collections.Array.map2
Full name: Microsoft.FSharp.Core.Operators.sqrt
Full name: Fsharp-100-exercises.T
static val PI : float
static val E : float
static member Abs : value:sbyte -> sbyte + 6 overloads
static member Acos : d:float -> float
static member Asin : d:float -> float
static member Atan : d:float -> float
static member Atan2 : y:float * x:float -> float
static member BigMul : a:int * b:int -> int64
static member Ceiling : d:decimal -> decimal + 1 overload
static member Cos : d:float -> float
...
Full name: System.Math
Full name: Fsharp-100-exercises.X
Full name: Fsharp-100-exercises.Y
Full name: Fsharp-100-exercises.R
Full name: MathNet.Numerics.LinearAlgebra.Vector.map
Full name: Fsharp-100-exercises.T
Full name: Microsoft.FSharp.Collections.Array.max
Full name: Microsoft.FSharp.Collections.Array.findIndex
Full name: MathNet.Numerics.LinearAlgebra.Vector.maxIndex
Full name: Fsharp-100-exercises.element
Full name: Fsharp-100-exercises.Z
Full name: Fsharp-100-exercises.element
val int8 : value:'T -> sbyte (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.int8
--------------------
type int8 = System.SByte
Full name: Microsoft.FSharp.Core.int8
val int32 : value:'T -> int32 (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.int32
--------------------
type int32 = System.Int32
Full name: Microsoft.FSharp.Core.int32
val int64 : value:'T -> int64 (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.int64
--------------------
type int64 = System.Int64
Full name: Microsoft.FSharp.Core.int64
--------------------
type int64<'Measure> = int64
Full name: Microsoft.FSharp.Core.int64<_>
Full name: Microsoft.FSharp.Collections.List.iter
val float32 : value:'T -> float32 (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.float32
--------------------
type float32 = System.Single
Full name: Microsoft.FSharp.Core.float32
--------------------
type float32<'Measure> = float32
Full name: Microsoft.FSharp.Core.float32<_>
Full name: Fsharp-100-exercises.NamedSequence<_>
member Add : key:'TKey * value:'TValue -> unit
member ContainsKey : key:'TKey -> bool
member Item : 'TKey -> 'TValue with get, set
member Keys : ICollection<'TKey>
member Remove : key:'TKey -> bool
member TryGetValue : key:'TKey * value:'TValue -> bool
member Values : ICollection<'TValue>
Full name: System.Collections.Generic.IDictionary<_,_>
val string : value:'T -> string
Full name: Microsoft.FSharp.Core.Operators.string
--------------------
type string = System.String
Full name: Microsoft.FSharp.Core.string
Full name: Fsharp-100-exercises.Z
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.dict
Full name: Fsharp-100-exercises.product
Full name: Fsharp-100-exercises.distance
Full name: Fsharp-100-exercises.xs
Full name: Fsharp-100-exercises.ys
Full name: Fsharp-100-exercises.D
DenseMatrix.Create(rows: int, columns: int, value: float) : DenseMatrix
Full name: Fsharp-100-exercises.Z
Full name: Microsoft.FSharp.Collections.Array.ofSeq
Full name: Fsharp-100-exercises.sigma
Full name: Fsharp-100-exercises.mu
Full name: Fsharp-100-exercises.G
Full name: Microsoft.FSharp.Core.Operators.exp
Full name: Fsharp-100-exercises.D
Full name: MathNet.Numerics.LinearAlgebra.DenseVector.init
Full name: Fsharp-100-exercises.G
Vector.Subtract(scalar: float) : Vector<float>
Vector.Subtract(other: Vector<float>, result: Vector<float>) : unit
Vector.Subtract(scalar: float, result: Vector<float>) : unit
Full name: Fsharp-100-exercises.Array2D.foldByColumn
val array : 'b [,]
--------------------
type 'T array = 'T []
Full name: Microsoft.FSharp.Core.array<_>
Full name: Microsoft.FSharp.Collections.Array2D.length2
Full name: Microsoft.FSharp.Collections.Array.fold
Full name: Microsoft.FSharp.Core.Operators.nan
module Array2D
from Fsharp-100-exercises
--------------------
module Array2D
from Microsoft.FSharp.Collections
struct
member CompareTo : value:obj -> int + 1 overload
member Equals : obj:obj -> bool + 1 overload
member GetHashCode : unit -> int
member GetTypeCode : unit -> TypeCode
member ToString : unit -> string + 3 overloads
static val MinValue : float
static val MaxValue : float
static val Epsilon : float
static val NegativeInfinity : float
static val PositiveInfinity : float
...
end
Full name: System.Double
Full name: MathNet.Numerics.LinearAlgebra.MatrixExtensions.matrix
Full name: MathNet.Numerics.LinearAlgebra.Matrix.foldByCol
static val DBNull : obj
static member ChangeType : value:obj * typeCode:TypeCode -> obj + 3 overloads
static member FromBase64CharArray : inArray:char[] * offset:int * length:int -> byte[]
static member FromBase64String : s:string -> byte[]
static member GetTypeCode : value:obj -> TypeCode
static member IsDBNull : value:obj -> bool
static member ToBase64CharArray : inArray:byte[] * offsetIn:int * length:int * outArray:char[] * offsetOut:int -> int + 1 overload
static member ToBase64String : inArray:byte[] -> string + 3 overloads
static member ToBoolean : value:obj -> bool + 17 overloads
static member ToByte : value:obj -> byte + 18 overloads
...
Full name: System.Convert
(+0 other overloads)
System.Convert.ToDouble(value: bool) : float
(+0 other overloads)
System.Convert.ToDouble(value: string) : float
(+0 other overloads)
System.Convert.ToDouble(value: decimal) : float
(+0 other overloads)
System.Convert.ToDouble(value: float) : float
(+0 other overloads)
System.Convert.ToDouble(value: float32) : float
(+0 other overloads)
System.Convert.ToDouble(value: uint64) : float
(+0 other overloads)
System.Convert.ToDouble(value: int64) : float
(+0 other overloads)
System.Convert.ToDouble(value: uint32) : float
(+0 other overloads)
System.Convert.ToDouble(value: int) : float
(+0 other overloads)
Full name: Microsoft.FSharp.Collections.Seq.toArray
(+0 other overloads)
System.Convert.ToBoolean(value: decimal) : bool
(+0 other overloads)
System.Convert.ToBoolean(value: float) : bool
(+0 other overloads)
System.Convert.ToBoolean(value: float32) : bool
(+0 other overloads)
System.Convert.ToBoolean(value: string) : bool
(+0 other overloads)
System.Convert.ToBoolean(value: uint64) : bool
(+0 other overloads)
System.Convert.ToBoolean(value: int64) : bool
(+0 other overloads)
System.Convert.ToBoolean(value: uint32) : bool
(+0 other overloads)
System.Convert.ToBoolean(value: int) : bool
(+0 other overloads)
System.Convert.ToBoolean(value: uint16) : bool
(+0 other overloads)
Full name: Fsharp-100-exercises.z
Full name: Microsoft.FSharp.Collections.Seq.minBy
Full name: Microsoft.FSharp.Core.Operators.abs
Full name: MathNet.Numerics.LinearAlgebra.Vector.minAbsIndex
Full name: Fsharp-100-exercises.Z
static member AppendAllLines : path:string * contents:IEnumerable<string> -> unit + 1 overload
static member AppendAllText : path:string * contents:string -> unit + 1 overload
static member AppendText : path:string -> StreamWriter
static member Copy : sourceFileName:string * destFileName:string -> unit + 1 overload
static member Create : path:string -> FileStream + 3 overloads
static member CreateText : path:string -> StreamWriter
static member Decrypt : path:string -> unit
static member Delete : path:string -> unit
static member Encrypt : path:string -> unit
static member Exists : path:string -> bool
...
Full name: System.IO.File
System.IO.File.ReadAllLines(path: string, encoding: System.Text.Encoding) : string []
System.String.Split(separator: string [], options: System.StringSplitOptions) : string []
System.String.Split(separator: char [], options: System.StringSplitOptions) : string []
System.String.Split(separator: char [], count: int) : string []
System.String.Split(separator: string [], count: int, options: System.StringSplitOptions) : string []
System.String.Split(separator: char [], count: int, options: System.StringSplitOptions) : string []
Full name: Fsharp-100-exercises.Z
static member Read<'T> : reader:TextReader * ?sparse:bool * ?delimiter:string * ?hasHeaders:bool * ?formatProvider:IFormatProvider * ?missingValue:Nullable<'T> -> Matrix<'T> + 2 overloads
Full name: MathNet.Numerics.Data.Text.DelimitedReader
DelimitedReader.Read<'T (requires default constructor and value type and 'T :> System.ValueType and 'T :> System.IEquatable<'T> and 'T :> System.IFormattable)>(filePath: string, ?sparse: bool, ?delimiter: string, ?hasHeaders: bool, ?formatProvider: System.IFormatProvider, ?missingValue: System.Nullable<'T>) : Matrix<'T>
DelimitedReader.Read<'T (requires default constructor and value type and 'T :> System.ValueType and 'T :> System.IEquatable<'T> and 'T :> System.IFormattable)>(reader: System.IO.TextReader, ?sparse: bool, ?delimiter: string, ?hasHeaders: bool, ?formatProvider: System.IFormatProvider, ?missingValue: System.Nullable<'T>) : Matrix<'T>
val double : value:'T -> float (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.double
--------------------
type double = System.Double
Full name: Microsoft.FSharp.Core.double
Full name: Fsharp-100-exercises.generate
val seq : sequence:seq<'T> -> seq<'T>
Full name: Microsoft.FSharp.Core.Operators.seq
--------------------
type seq<'T> = System.Collections.Generic.IEnumerable<'T>
Full name: Microsoft.FSharp.Collections.seq<_>
Full name: Fsharp-100-exercises.generate
Full name: Microsoft.FSharp.Collections.Array.create
Full name: Fsharp-100-exercises.I
Full name: Microsoft.FSharp.Collections.Array.length
Full name: Microsoft.FSharp.Collections.Seq.countBy
Full name: Microsoft.FSharp.Core.Operators.id
Full name: Microsoft.FSharp.Collections.Seq.iter
Full name: Fsharp-100-exercises.X
Full name: Fsharp-100-exercises.F
val int : value:'T -> int (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.int
--------------------
type int = int32
Full name: Microsoft.FSharp.Core.int
--------------------
type int<'Measure> = int
Full name: Microsoft.FSharp.Core.int<_>
Full name: Microsoft.FSharp.Collections.Array.zip
Full name: Microsoft.FSharp.Collections.Array.iter
Full name: Fsharp-100-exercises.w
Full name: Fsharp-100-exercises.h
Full name: Fsharp-100-exercises.I
Full name: Fsharp-100-exercises.F
Full name: Fsharp-100-exercises.n
Full name: Microsoft.FSharp.Collections.Seq.distinct
module Set
from Microsoft.FSharp.Collections
--------------------
type Set<'T (requires comparison)> =
interface IComparable
interface IEnumerable
interface IEnumerable<'T>
interface ICollection<'T>
new : elements:seq<'T> -> Set<'T>
member Add : value:'T -> Set<'T>
member Contains : value:'T -> bool
override Equals : obj -> bool
member IsProperSubsetOf : otherSet:Set<'T> -> bool
member IsProperSupersetOf : otherSet:Set<'T> -> bool
...
Full name: Microsoft.FSharp.Collections.Set<_>
--------------------
new : elements:seq<'T> -> Set<'T>
Full name: Microsoft.FSharp.Collections.Set.ofSeq
Full name: Microsoft.FSharp.Collections.Array.reduce
Full name: Microsoft.FSharp.Collections.Set.union
Full name: Microsoft.FSharp.Collections.Set.count
Full name: Microsoft.FSharp.Collections.Set.intersect
Full name: Fsharp-100-exercises.A
Full name: Fsharp-100-exercises.sum
Full name: Microsoft.FSharp.Collections.Seq.sum
Full name: Fsharp-100-exercises.S
Full name: Fsharp-100-exercises.D_means
Full name: Microsoft.FSharp.Collections.Seq.zip
Full name: Microsoft.FSharp.Collections.Seq.groupBy
Full name: Microsoft.FSharp.Collections.Seq.averageBy