Skip to content

Instantly share code, notes, and snippets.

@evaporei
Last active September 13, 2019 19:07
Show Gist options
  • Save evaporei/3b76295a8389da666c2fc51653f5d0fd to your computer and use it in GitHub Desktop.
Save evaporei/3b76295a8389da666c2fc51653f5d0fd to your computer and use it in GitHub Desktop.
Ugly TypeScript Monoid
class MyNumber extends Number implements Monoid<MyNumber> {
public x: Number;
constructor(x: Number) {
super(x)
this.x = x;
}
toString(): string {
return this.x.toString()
}
mappend(myNumber: MyNumber): MyNumber {
return new MyNumber(this.x + myNumber.x)
}
mempty(): MyNumber {
return new MyNumber(0)
}
}
console.log('MyNumber append:', new MyNumber(5).mappend(new MyNumber(4))) // 9
console.log('MyNumber identity:', new MyNumber(5).mempty()) // 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment