data-default 0.7.1.1 → 0.7.1.2
raw patch · 4 files changed
+182/−62 lines, 4 filesdep +containersdep +data-defaultdep +mtldep ~data-default-classPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: containers, data-default, mtl, old-locale
Dependency ranges changed: data-default-class
API changes (from Hackage documentation)
- Data.Default: class Default a
+ Data.Default: class () => Default a
- Data.Default: def :: a
+ Data.Default: def :: Default a => a
Files
- Data/Default.hs +33/−24
- LICENSE +24/−20
- data-default.cabal +27/−18
- t/basics.hs +98/−0
Data/Default.hs view
@@ -1,38 +1,47 @@ {- -Copyright (c) 2013 Lukas Mai+Copyright (c) 2013, Lukas Mai All rights reserved. -Redistribution and use in source and binary forms, with or without modification,-are permitted provided that the following conditions are met:+Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright notice, this- list of conditions and the following disclaimer.-* Redistributions in binary form must reproduce the above copyright notice,- this list of conditions and the following disclaimer in the documentation- and/or other materials provided with the distribution.-* Neither the name of the author nor the names of his contributors- may be used to endorse or promote products derived from this software- without specific prior written permission.+ * Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY LUKAS MAI AND CONTRIBUTORS "AS IS" AND ANY-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE-DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.+ * Redistributions in binary form must reproduce the above+ copyright notice, this list of conditions and the following+ disclaimer in the documentation and/or other materials provided+ with the distribution. + * Neither the name of Lukas Mai nor the names of other+ contributors may be used to endorse or promote products derived+ from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.+ -} +{-|+Module : Data.Default+Description : Defines a class for types with a default value.++This module defines a class for types with a default value. Instances are+provided for '()', 'Data.Set.Set', 'Data.Map.Map', 'Int', 'Integer',+'Float', 'Double', and many others (see below).+-} module Data.Default (--- | This module defines a class for types with a default value. Instances are--- provided for '()', 'Data.Set.Set', 'Data.Map.Map', 'Int', 'Integer',--- 'Float', 'Double', and many others (see below). Default(..) ) where
LICENSE view
@@ -1,26 +1,30 @@-Copyright (c) 2013 Lukas Mai+Copyright (c) 2013, Lukas Mai All rights reserved. -Redistribution and use in source and binary forms, with or without modification,-are permitted provided that the following conditions are met:+Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright notice, this- list of conditions and the following disclaimer.-* Redistributions in binary form must reproduce the above copyright notice,- this list of conditions and the following disclaimer in the documentation- and/or other materials provided with the distribution.-* Neither the name of the author nor the names of his contributors- may be used to endorse or promote products derived from this software- without specific prior written permission.+ * Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+ * Redistributions in binary form must reproduce the above+ copyright notice, this list of conditions and the following+ disclaimer in the documentation and/or other materials provided+ with the distribution.++ * Neither the name of Lukas Mai nor the names of other+ contributors may be used to endorse or promote products derived+ from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data-default.cabal view
@@ -1,21 +1,30 @@-Name: data-default-Version: 0.7.1.1-Cabal-Version: >= 1.6-Category: Data-Synopsis: A class for types with a default value-Build-Type: Simple-License: BSD3-License-File: LICENSE-Author: Lukas Mai-Maintainer: <l.mai@web.de>+cabal-version: 3.0+name: data-default+version: 0.7.1.2+category: Data+synopsis: A class for types with a default value+build-type: Simple+license: BSD-3-Clause+license-file: LICENSE+copyright: (c) 2013 Lukas Mai+author: Lukas Mai+maintainer: <lukasmai.403+hackage@gmail.com> source-repository head- type: git- location: https://github.com/mauke/data-default+ type: git+ location: https://github.com/mauke/data-default -Library- Build-Depends: base >=2 && <5, data-default-class >=0.1.2.0,- data-default-instances-containers,- data-default-instances-dlist,- data-default-instances-old-locale- Exposed-Modules: Data.Default+library+ build-depends: base >=2 && <5, data-default-class ^>=0.1.2.0,+ data-default-instances-containers,+ data-default-instances-dlist,+ data-default-instances-old-locale+ exposed-modules: Data.Default+ default-language: Haskell98++test-suite test+ type: exitcode-stdio-1.0+ main-is: basics.hs+ build-depends: base >=2 && <5, containers, data-default, mtl, old-locale+ hs-source-dirs: t+ default-language: Haskell98
+ t/basics.hs view
@@ -0,0 +1,98 @@+{-# LANGUAGE GeneralizedNewtypeDeriving #-}++import Data.Default+import Data.Int+import Data.Word+import Data.Monoid+import Data.Complex+import System.Locale+import qualified Data.Sequence as Seq+import qualified Data.Map as M+import qualified Data.Set as S+import qualified Data.IntMap as IM+import qualified Data.IntSet as IS+import Data.Tree (Tree(..))++import Control.Monad (when)+import Control.Monad.Reader+import Data.IORef+import System.Exit (exitFailure)+import System.IO++newtype Test a = Test{ unTest :: ReaderT (IORef Int) IO a }+ deriving (Functor, Applicative, Monad, MonadIO, MonadReader (IORef Int))++runTest :: (MonadIO m) => Test a -> m a+runTest t = liftIO $ do+ hSetBuffering stdout LineBuffering+ r <- newIORef 1+ runReaderT (unTest t) r++instance (Default a) => Default (Test a) where+ def = return def++withRef :: (IORef Int -> IO a) -> Test a+withRef f = do+ r <- ask+ liftIO (f r)++planTests :: Int -> Test ()+planTests n = liftIO $ do+ putStrLn $ "1.." ++ show n++ok :: Bool -> String -> Test ()+ok b s = withRef $ \r -> do+ c <- atomicModifyIORef r ((,) =<< succ)+ putStrLn $ (if b then "" else "not ") ++ "ok " ++ show c ++ " - " ++ s+ when (not b)+ exitFailure++is {-, isNot-} :: (Show a, Eq a) => a -> a -> Test ()+is x y = ok (x == y) (show x ++ " == " ++ show y)+-- isNot x y = ok (x /= y) (show x ++ " /= " ++ show y)++-- diag :: String -> Test ()+-- diag s = liftIO $ do+-- putStrLn $ "# " ++ s++main :: IO ()+main = runTest $ do+ planTests 37+ sequence_ [def, liftIO def, return ()]+ is (def (length :: [a] -> Int)) (0 :: Int)+ is def ()+ is def (Nothing :: Maybe (Int, Ordering, [Float]))+ is def ""+ is def (S.empty :: S.Set ())+ is def (M.empty :: M.Map () ())+ is def IS.empty+ is def (IM.empty :: IM.IntMap ())+ is def (Seq.empty :: Seq.Seq ())+ is def (Node (0 :: Complex Float) [])+ is def EQ+ is def (Any False)+ is def (All True)+ is def (Last Nothing :: Last ())+ is def (First Nothing :: First ())+ is def (Sum (0 :: Integer))+ is def (Product (1 :: Rational))+ is def (0 :: Int)+ is def (0 :: Integer)+ is def (0 :: Float)+ is def (0 :: Double)+ is def (0 :: Rational)+ is def (0 :: Complex Double)+ is def (0 :: Int8)+ is def (0 :: Int16)+ is def (0 :: Int32)+ is def (0 :: Int64)+ is def (0 :: Word)+ is def (0 :: Word8)+ is def (0 :: Word16)+ is def (0 :: Word32)+ is def (0 :: Word64)+ is def ((def, def) :: ((), Maybe ((), ())))+ is def ((def, def, def) :: ((), Maybe ((), ()), [Ordering]))+ is def ((def, def, def, def) :: ((), Maybe ((), ()), [Ordering], Float))+ is def ((def, def, def, def, def, def, def) :: ((), (), (), (), (), (), ()))+ is def defaultTimeLocale