message: have operators as a module
diff: +declare global {
  interface Object {
  /**
  * To be used like
  @@ -8,13 +9,6 @@ interface Object {
  ["|>"]<Self, Result>(this: Self, next: (value: Self) => Result): Result
  }
  -Object.defineProperty(Object.prototype, "|>", {
  - value<Self, Result>(this: Self, next: (value: Self) => Result): Result {
  - return next(this)
  - },
  - enumerable: false
  -})
  -
  interface Function {
  /**
  * This operator does not work with generic parameters
  @@ -24,6 +18,14 @@ interface Function {
  next: (value: A) => Result
  ): (...args: Args) => Result
  }
  +}
  +
  +Object.defineProperty(Object.prototype, "|>", {
  + value<Self, Result>(this: Self, next: (value: Self) => Result): Result {
  + return next(this)
  + },
  + enumerable: false
  +})
  Object.defineProperty(Function.prototype, ">>", {
  value<Args extends any[], A, Result>(
  @@ -34,3 +36,5 @@ Object.defineProperty(Function.prototype, ">>", {
  },
  enumerable: false
  })
  +
  +export {}
  