Skip to content

Instantly share code, notes, and snippets.

View sslotsky's full-sized avatar
🌶️
Working from home

Sam Slotsky sslotsky

🌶️
Working from home
View GitHub Profile
let l = [1, 2, 3]
|> List.map(n => n * 2)
|> List.filter(n => n mod 2 != 0)
|> List.tl;
let selection = [1, 2, 3]
|> List.map(n => n * 3)
|> List.filter(n => n mod 2 == 0);
let integers = [1, 2, 3];
let multiples = integers |> List.map(n => n * 3);
let add1 = x => x + 1;
/* The following statements are equivalent: */
add1(2);
2 |> add1;
/* Non-fluent list operations in ReasonML */
let integers = [1, 2, 3];
let multiples = List.map(n => n * 3, integers);
let evens = List.filter(n => n mod 2 == 0, multiples);
// Fluent collection operations in C# using IEnumerable<T>
var selection = someCollection
.Select(x => x * 3)
.Where(x => x % 2 == 0);
let covers = (x, y) => sites^ |> List.exists(site => site.left <= x && site.right >= y);
let percentCovered = (x, y) => {
let (x, y) = (min(x, y), max(x, y));
let amountCovered = sites^ |> List.fold_left((sum, site) => {
sum +. (min(site.right, y) -. max(site.left, x))
}, 0.0);
100.0 *. amountCovered /. (y -. x);
};
let insert = site => {
let (leftSide, rightSide) = sites^ |> List.partition(s => s.left <= site.left);
let (overlap, rest) = rightSide |> List.partition(s => s.left <= site.right);
let rightSide = switch(overlap) {
| [] => [site, ...rightSide]
| _ => let closest = overlap->List.rev->List.hd; [site->connectRight(closest), ...rest]
}
let site = rightSide->List.hd;
type ui = {
height: float,
width: float,
input: unit => string,
calculateWidth: string => float
};