/// Setup MathJax and HTML helpers
@"" |> Util.Html |> Display
let html x = { Html = x }
let h1 text = { Html = "
" + text + "
" }
let h2 text = { Html = "
" + text + "
" }
let h3 text = { Html = "
" + text + "
" }
let ul text = { Html = "
" + text + "
" }
let ul3 text = { Html = "
" + text + "
" }
let img url = { Html = "" }
let uli text url = { Html = "
" + text + "" + "
" }
let uli2 text url = { Html = "
" + text + "" + "
" }
let uli3 text url = { Html = "
" + text + "" + "
" }
let inline (^+^) (x:HtmlOutput) (y:HtmlOutput) = { Html = x.Html + y.Html }
// Use the Sylvester.Tensors package from NuGet
#load "Paket.fsx"
Paket.Package["Sylvester.Arithmetic"; "Sylvester.Tensors"; "Sylvester.DataFrame"; "FSharp.Interop.Dynamic"]
#load "Paket.Generated.Refs.fsx"
open System
open System.Collections.Generic
open System.Linq;
open FSharp.Interop.Dynamic
open Sylvester.Data
open Sylvester.Arithmetic
open Sylvester.Arithmetic.N10
open Sylvester.Arithmetic.Collections
open Sylvester.Tensors
uli2 "West Indies" "https://upload.wikimedia.org/wikipedia/commons/9/98/Caribbean_general_map.png"
uli2 "Indians came to Trinidad in the 19th century as indentured labourers" "https://thepeopleafterslavery.files.wordpress.com/2014/03/indentured-labourers-2.png"
uli2 "Today Trinidad is multi-ethnic and multi-cultural" "http://currentriggers.com/wp-content/uploads/2016/11/4-17.jpg"
uli2 "Divali and other religious festivals celebrated by all" "https://www.guardian.co.tt/image-3.1974716.c274fa76ed?size=512"
uli2 "Cricket!" "https://akm-img-a-in.tosshub.com/indiatoday/images/story/201810/AP18297590913026.jpeg?P8W81HcX8oQiGA9xATv_s0lOWQKR3LH9"
let titanic = new CsvFile("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv")
titanic.["Pclass"].First().Type <- typeof
let dt = Frame(titanic)
query {
for r in dt do
groupBy r?Pclass into g
sortBy g.Key
select (
let survived = (g.Where(fun p -> p?Survived = "1").Count()) |> float
let died = (g.Where(fun p -> p?Survived = "0").Count()) |> float
let ctotal = survived + died
let psurvived = round(100.0 * survived / ctotal)
let pdied = round(100.0 * died / ctotal)
(g.Key, pdied, psurvived)
)} |> Util.Table
let v1 = Vec<1000>.Rand //Create a vector of length 1000
let v2 = Vec<500>.Rand //Create a vector of length 500
v1 + v2 //Can we do this?
// Create typed instance of some natural numbers
let a = new N<1000>()
let b = new N<900>()
a +< b
a +> b
a +!= b
a +== b
check((b * a) +== zero) //Causes type error
check ((a - b) +> zero) // But this is ok
zero - a //This results in another type, not a compiler error