packages feed

uniform-algebras-0.1.2: Uniform/Properties.hs

---------------------------------------------------------------------
---Module      :   Properties  
--             a place to state some algebraic laws
--             used in tests 
-- compare with Data.Zero 
----------------------------------------------------------------------
-- {-# LANGUAGE FlexibleContexts #-}
-- {-# LANGUAGE MultiParamTypeClasses #-}
-- {-# LANGUAGE DefaultSignatures #-}
-- {-# LANGUAGE TypeOperators #-}

{-# OPTIONS -Wall #-}

module Uniform.Properties
  ( module Uniform.Properties
  )
where

import           Algebra.Laws             as Law
--import           Test.Framework
import           Test.Invariant           as Rule
prop_zero_mknull :: (Monoid a, Eq a)  => a -> Bool
prop_zero_mknull a = Law.zero mappend a mempty

prop_assoz :: (Monoid a, Eq a)  => a -> a ->  a -> Bool
prop_assoz a b c = Rule.associative mappend a b c

prop_concat :: (Monoid a, Eq a) => [a] -> Bool
prop_concat as =    mconcat as == foldr mappend mempty as



--prop_s2lat :: String -> Bool  -- will fail ? fails
--prop_s2lat = inverts lat2s s3lat

    --prop_s2latin :: String -> Bool     -- why does this always work?  (is the intermediate result ok?)
--prop_s2latin = inverts latin2s s2latin

--prop_s3latin :: String -> Bool     --inverts with reasonable intermediate value
--prop_s3latin s = inverts latin2s s2latin (convertLatin s)

--