# Refinement

`interface Refinement<F, A>`

### Functions

 applicativeError `abstract fun applicativeError(): ApplicativeError>` invalidValueMsg `abstract fun invalidValueMsg(a: A): ``String` refine `open fun refine(value: A): Kind``open fun refine(value: A, f: (A) -> B): Kind` refine2 `open fun refine2(a: A, b: A, f: (Tuple2) -> B): Kind` refine3 `open fun refine3(a: A, b: A, c: A, f: (Tuple3) -> B): Kind` refine4 `open fun refine4(a: A, b: A, c: A, d: A, f: (Tuple4) -> B): Kind` refinement `abstract fun A.refinement(): ``Boolean` refineSequence `open fun refineSequence(value: Kind, traverse: Traverse): Kind>` refineSequenceList `open fun refineSequenceList(elements: ``List``): Kind>` refineTraverse `open fun refineTraverse(value: Kind, traverse: Traverse, f: (A) -> B): Kind>` refineTraverseList `open fun refineTraverseList(elements: ``List``, f: (A) -> B): Kind>`

### Inheritors

 Greater `Greater` defines a subset of Numbers wich are greater than min.`interface Greater : ``Refinement``` GreaterEqual `GreaterEqual` defines a subset of Numbers which are greater or equal than min`interface GreaterEqual : ``Refinement``` Less `Less` defines a subset of Numbers which are less than max`interface Less : ``Refinement``` LessEqual `LessEqual` defines a subset of Numbers which are less or equal than max`interface LessEqual : ``Refinement``` Negative `Negative` defines a subset of all negative Numbers (this is x < 0)`interface Negative : ``Refinement``` NonEmpty `NonEmpty` defines a subtype of `A`s which are non empty.`interface NonEmpty : ``Refinement``` NonNegative `NonNegative` defines a subset of all Numbers which are non negative (this is x >= 0)`interface NonNegative : ``Refinement``` NonPositive `NonPositive` defines a subset of all numbers which are non positive (this is x <= 0)`interface NonPositive : ``Refinement``` NonZero `NonZero` defines a subset of Numbers which are not 0`interface NonZero : ``Refinement``` Not `interface Not : ``Refinement``` Positive `Positive` defines a subset of all numbers which are positive (this is x > 0)`interface Positive : ``Refinement```

Do you like Arrow?

<