# not

Takes a function $$f$$ , and returns a new one receiving a value $$val$$ and returning the opposite of what $$f(val)$$ would have returned.

It is largely used within the library itself.

{% code title="contains.js" %}

```javascript
/* Part of the contains validator */


const contains = (value) => compose(
  when(isString, (string) => string.includes(value)),
  when(Array.isArray, arrayContains(value)),
  when(not(or(isString, Array.isArray)), stubFalse),
);
```

{% endcode %}

#### Related validators

{% content-ref url="compose" %}
[compose](https://antonioru.gitbook.io/deep-waters/composition/compose)
{% endcontent-ref %}

{% content-ref url="when" %}
[when](https://antonioru.gitbook.io/deep-waters/composition/when)
{% endcontent-ref %}

{% content-ref url="or" %}
[or](https://antonioru.gitbook.io/deep-waters/composition/or)
{% endcontent-ref %}

�
