data-checked 0.1 → 0.2
raw patch · 2 files changed
+23/−4 lines, 2 filesdep +deepseqPVP ok
version bump matches the API change (PVP)
Dependencies added: deepseq
API changes (from Hackage documentation)
+ Data.Checked: instance NFData v => NFData (Checked p v)
+ Data.Checked: instance Typeable2 Checked
+ Data.Checked: trustMap :: (v -> v) -> Checked p v -> Checked p v
+ Data.Checked: trustThat :: p -> v -> Checked p v
Files
- data-checked.cabal +3/−3
- src/Data/Checked.hs +20/−1
data-checked.cabal view
@@ -1,5 +1,5 @@ Name: data-checked-Version: 0.1+Version: 0.2 Category: Data Stability: experimental Synopsis: Type-indexed runtime-checked properties @@ -24,8 +24,8 @@ Location: https://github.com/mvv/data-checked.git Library- Build-Depends:- base >= 4 && < 5+ Build-Depends: base >= 4 && < 5+ , deepseq >= 1.2 Hs-Source-Dirs: src GHC-Options: -Wall Exposed-Modules:
src/Data/Checked.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE UnicodeSyntax #-}+{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE MultiParamTypeClasses #-} @@ -6,19 +7,37 @@ module Data.Checked ( Checked , trustMe+ , trustThat+ , trustMap , checked , Property(..) , maybeHolds , check ) where +import Data.Typeable (Typeable)+import Control.DeepSeq (NFData(..))+ -- | Wrapper-evidence for property /p/.-newtype Checked p v = Checked v+newtype Checked p v = Checked v deriving Typeable +instance NFData v ⇒ NFData (Checked p v) where+ rnf (Checked v) = rnf v+ -- | Use when the property can be deduced without a runtime check. trustMe ∷ v → Checked p v trustMe = Checked {-# INLINE trustMe #-}++-- | Use when the property can be deduced without a runtime check.+trustThat ∷ p → v → Checked p v+trustThat _ = Checked+{-# INLINE trustThat #-}++-- | Apply a fuction that preserves the property to the checked value.+trustMap ∷ (v → v) → Checked p v → Checked p v+trustMap f (Checked v) = Checked (f v)+{-# INLINE trustMap #-} -- | Unwrap the checked value. checked ∷ Checked p v → v