MonetJS API extension draft

Many devs working with monet asked for more operators…

New operators

Common


for: Identity, List, Either, Maybe, Validation and NEL

Instance methods:
  • .forEach(fn: (v: T) => void): void  - for side effects on wrapped value
  • .every(fn: (v: T) => boolean): boolean  - ( see scala Option forall )
  • .exists(fn: (v: T) => boolean): boolean ( like js Array .some() )
  • .contains(v: T): boolean - strict equality
  • .iterator(): Iterator<T> 
  • [Symbol.iterator](): Iterator<T> - to make them work with for … of and  ...spread 
  • .toArray(): T[]  ( already on List )
  • .toList(): List<T>  ( already exists on Maybe )
  • .toSet(): Set<T> 
  • .to<W>(const: <X>(i: Iterable<X>) => W<X>): W<T> 
  • .mapOver(v: X): Maybe<Y> if we have Maybe<(inp: X) => Y> 
  • .mapTo(v: V): Maybe<V> 

Maybe

…for Maybe<T> 

Instance methods:
  • .filterNot(fn: (v: T) => boolean): Maybe<T> 
  • .orLazy(fn: () => T): Maybe<T>  ( remove overloading of orJust / orSome )
  • .getOrElse(v: T): T ( alias for orJust / orSome )
  • .orNull(): T | null  (to wire it back with classic JS env) 
  • .catchMap(A → M[B]): M[B]  (lazy version of orElse)

Static methods (constructors):
  • .fromFalsy(v: T) ( shortcut for .fromNull(v: T).filter(Boolean) )

Eiter

…for Either<E, V> 

Instance methods:
.fold( … ) - alias for .cata( … ) 
.swap(): Either<V, E> 
.catchMap(A → M[B]): M[B]

Validation 

same as for Either