Skip to content

Commit

Permalink
improved definition of pointed functor
Browse files Browse the repository at this point in the history
  • Loading branch information
jethrolarson committed Aug 3, 2022
1 parent 69d1b25 commit 6d30175
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -495,14 +495,18 @@ some(1).map(f).map(g) // = some(3)
```

## Pointed Functor
An object with an `of` function that puts _any_ single value into it.
An object that is a [Functor](#functor) that can be created from _any_ value. A pointed functor can be seen as a container that can wrap something of any type by [lifting](#lift) that value into it.

ES2015 adds `Array.of` making arrays a pointed functor.
Since JS arrays are functors (have a `.map` method) and have an `Array.of()` function they are pointed functors!

```js
Array.of(1) // [1]

Array.of(1).map(add(1)) // [2]
```

This `of` function is an important requirement for satisfying the [Monad](#monad) interface where it is an example of a [Kleisli Arrow](#kleisi-composition).

## Lift

Lifting is when you take a value and put it into an object like a [functor](#pointed-functor). If you lift a function into an [Applicative Functor](#applicative-functor) then you can make it work on values that are also in that functor.
Expand Down

0 comments on commit 6d30175

Please sign in to comment.