typedef monad<☣️ monadTag: 🥶>(t: 🥵 ➡️ 🥵) = 🏗️(monadTag) [
_functor: src.control.functor.functor(t);
_eta<🆒 a: 🥵>(x: a) ➡️ t(a);
_bind<🆒 a: 🥵, 🆒 b: 🥵>(k: a ➡️ t(b))(x: t(a)) ➡️ t(b);
];

typedef monad<☣️ monadTag: 🥶>(t: 🥵 ➡️ 🥵) = 🏗️(monadTag) [
_functor: src.control.functor.functor(t);
_eta<🆒 a: 🥵>(x: a) ➡️ t(a);
_bind<🆒 a: 🥵, 🆒 b: 🥵>(k: a ➡️ t(b))(x: t(a)) ➡️ t(b);
];