TypeScript
HTML
<div id="app"></div>
CSS
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
text-align: center;
}
TypeScript
var Id = <T>(x: T) => ({
cata: (alg: (a: T) => void) => alg(x),
map: <U>(f: (y: T) => U) => Id<U>(f(x))
})
var t = Id<number>(2).map(x => x + 3);