schonfinkel
TypeScript icon, indicating that this package has built-in type declarations

0.1.0 • Public • Published

Schönfinkel Coverage Status Build Status

Lightweight typescript utilities for functional programming

Installation

Simply install this package via npm

npm i schonfinkel

(This module automatically provide typescript type definitions)

Usage

At the moment the package just contains Option monads. An Option monad consists of two distinct values it embraces: none() and some(a) (where a can be any arbitrary other value). You can think of none() as a similar thing to null. Option monads provide an elegant way to handle nullable types/data and reduce infrastructure code enormously.

Here is a simple example of a function that returns an Option:

import { some, none } from 'schonfinkel';
 
function safeGetChar(str: string, index: number): Option<string> {
  if (index <= str.length)
    return none();
  else
    return some(str[index]);
}
 
safeGetChar('abc', 0); // some('a')
safeGetChar('abc', 5); // none()

Now you can simply use the map method to modify data (if present) or pass it (if not present); You can use this pretty much similar to the map method of the Javascript Array:

function safeGetCharUpperCase(str: string, index: number): Option<string> {
  return safeGetChar(str,index)
    .map(x => x.toUpperCase())
}
 
safeGetCharUpperCase('abc', 0); // some('A')
safeGetCharUpperCase('abc', 5); // none()

To provide default values for the Option monad in case of a none() value you can simply use the getOrElse method:

safeGetCharUpperCase('abc', 0)
  .getOrElse(''); // 'A'
safeGetCharUpperCase('abc', 5)
  .getOrElse(''); // ''
Method none() some(a) Description
map(f) none() some(f(a)) f is of type (a: A) => B
flatMap(f) none() f(a) f is of type (a: A) => Option<B> (flatmap is the monadic bind operator)
getOrNull null a
getOrUndefined undefined a
getOrElse(b) b a
getOrLazyElse(f) f() a computes the "else" value in a lazy fashon
pick(k) none() some(a[k]) safely get a property-value (of prop. k)
isNone() true false
forSome(f) - - f is of type (a: A) => void. f is only executed for an instance of Some
equals(opt) true iff opt is of type none() true iff opt is of type some(b) and a===b

Package Sidebar

Install

npm i schonfinkel

Weekly Downloads

0

Version

0.1.0

License

MIT

Unpacked Size

9.54 kB

Total Files

8

Last publish

Collaborators

  • edgar-dorausch