18
Maybe I'm not understanding it correctly, but Monads are data-structure objects whose methods return an data-structure object of the same type.
Like, (using Typescript):
interface IdentityMonad<T> {
map: ((fn: (v: T)) => T) => IdentityMonad<T>;
value: T
}
const Identity = <T>(value: T) => {
const map = (fn) => Identity(fn(initialValue));
return {
map, value
}
}
const square = (x) => x * x;
const twoId = Identity<number>(2);
console.log(twoId.value) //=> 2;
const sixtyFourId = twoId.map(square).map(square).map(square).map(square).map(square);
console.log(sixtyFourId.value) // => 64;
Oh, cool, didn't know there was a New Zealand based card game!