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;
Isn’t that what Rust is?
I’ve had good luck running Lasers & Feelings type games, created by the same team that did Blades in the Dark - and it’s perfect for new players who don’t want to get bogged down in miniatures rules and combat tactics.
Oh, cool, didn’t know there was a New Zealand based card game!