minus-squareKerryAnnCoder@lemmy.blahaj.zonetoProgrammer Humor@programming.dev•What the f*ck is a monadlinkfedilinkarrow-up2·1 year agoMaybe 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; linkfedilink
minus-squareKerryAnnCoder@lemmy.blahaj.zonetoProgrammer Humor@lemmy.ml•What if we tried designing C a second time?linkfedilinkarrow-up1·1 year agoIsn’t that what Rust is? linkfedilink
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;