Purescript Refined
June 22, 2019 ยท View on GitHub
A Purescript port of Refined.
Allows one to create types that restrain the values inside, and automatically generate validators for them.
For instance:
type DiceRoll = Refined (FromTo D1 D6) Int
invalidDiceRoll :: Either RefinedError DiceRoll
invalidDiceRoll = refine 8
-- invalidDiceRoll = Left (FromToError 1 6 8)
validDiceRoll :: Either RefinedError DiceRoll
validDiceRoll = refine 5
-- validDiceRoll = Right DiceRoll
diceRollToInt :: DiceRoll -> Int
diceRollToInt = unrefine
This package also contains EncodeJson and DecodeJson instances for Argonaut so that JSON data can be validated, and Arbitrary instances for use with QuickCheck.
Documentation can be found on Pursuit