conductor
Version:
A modern & functional JavaScript utility library
43 lines (27 loc) • 1.53 kB
Markdown
description: Logical NOT operator
# not
```erlang
not :: Any input => Boolean negation
```
## description
Returns the logical negation of the input value. It's the functional equivalent of the JavaScript not operator `!`. It can be very useful in a function composition chain, to avoid writing code like this:
```javascript
compose(b => !b, some(...))
```
As you can see from the type signature, it obviously accepts `Booleans` as input values, but also values of any types. Just beware of [how JavaScript coerces values to their Boolean equivalents](https://developer.mozilla.org/en-US/docs/Glossary/Truthy).
## examples
### basic example
```javascript
import { not } from 'conductor'
not(true) // false
```
### usage in a function composition
```javascript
import { compose, not } from 'conductor'
const illegal_characters = /[?:;!/-]/
const searchIllegalCharacters = str => illegal_characters.test(str)
const isValid = compose(not, searchIllegalCharacters)
```
Suppose we want have a function which checks if an input string is valid. The input is considered valid if does not contain any illegal characters. The illegal characters are listed in a regular expression. Then, we use [`RegExp.prototype.test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) to see if any of these characters is matched in the input string. Since our input is considered valid only if it `searchIllegalCharacters` returns false, we use the logical not operator to negate its result.