# result-type-simple

A simple Result object type implementation that I like and want to use in several projects.

### type Result a = Error String | OK a

The `Result`

constructor takes an `err`

and an `ok`

parameter.

`err`

- when provided the Result object is considered to be errored out.`ok`

- this will be the assigned value of the Result object.

`isOK`

: Result a -> Bool

Given a Result object determine if it is not an error.

`map`

: (a -> b) -> Result a -> Result b

Given a function that transforms the Result value from a -> b, that function will be applied if Result.isOK is true. Otherwise the original result will be returned.

`either`

(a -> b) -> (a -> b) -> Result a -> Result b

Given 2 functions, the first function will be called when Result.isOK is false and the second when Result.isOK is true. Both functions will receive the Result object's value.

`chain`

(Result a -> Result b) -> Result a -> Result b

Given a function that returns a result map the unwrapped result value to the input of that function. The given function is responsible for returning a Result object. This can effectively be used as an unwrap function.

`curry`

(a -> a) -> Result (really, it's just a guess at best)

Enables you to curry the `map`

and `either`

functions with the curry library
of your choice.

Example (es6):

`;; const Result = ; `

Example (es5):

`var curry = curryvar Result = ;`