UNPKG

conductor

Version:

A modern & functional JavaScript utility library

43 lines (27 loc) 1.53 kB
--- 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.