Package

purescript-refined

Repository
danieljharvey/purescript-refined
License
MIT
Uploaded by
danieljharvey
Published on
2019-04-13T13:02:45Z

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.