OneTuple 0.2.1 → 0.2.2
raw patch · 6 files changed
+58/−51 lines, 6 filesdep +semigroupsdep ~basenew-uploaderPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: semigroups
Dependency ranges changed: base
API changes (from Hackage documentation)
- Data.Tuple.OneTuple: instance Applicative OneTuple
- Data.Tuple.OneTuple: instance Bounded a => Bounded (OneTuple a)
- Data.Tuple.OneTuple: instance Enum a => Enum (OneTuple a)
- Data.Tuple.OneTuple: instance Eq a => Eq (OneTuple a)
- Data.Tuple.OneTuple: instance Foldable OneTuple
- Data.Tuple.OneTuple: instance Functor OneTuple
- Data.Tuple.OneTuple: instance Ix a => Ix (OneTuple a)
- Data.Tuple.OneTuple: instance Monad OneTuple
- Data.Tuple.OneTuple: instance MonadFix OneTuple
- Data.Tuple.OneTuple: instance Monoid a => Monoid (OneTuple a)
- Data.Tuple.OneTuple: instance Ord a => Ord (OneTuple a)
- Data.Tuple.OneTuple: instance Read a => Read (OneTuple a)
- Data.Tuple.OneTuple: instance Show a => Show (OneTuple a)
- Data.Tuple.OneTuple: instance Traversable OneTuple
+ Data.Tuple.OneTuple: instance Control.Monad.Fix.MonadFix Data.Tuple.OneTuple.OneTuple
+ Data.Tuple.OneTuple: instance Data.Foldable.Foldable Data.Tuple.OneTuple.OneTuple
+ Data.Tuple.OneTuple: instance Data.Semigroup.Semigroup a => Data.Semigroup.Semigroup (Data.Tuple.OneTuple.OneTuple a)
+ Data.Tuple.OneTuple: instance Data.Traversable.Traversable Data.Tuple.OneTuple.OneTuple
+ Data.Tuple.OneTuple: instance GHC.Arr.Ix a => GHC.Arr.Ix (Data.Tuple.OneTuple.OneTuple a)
+ Data.Tuple.OneTuple: instance GHC.Base.Applicative Data.Tuple.OneTuple.OneTuple
+ Data.Tuple.OneTuple: instance GHC.Base.Functor Data.Tuple.OneTuple.OneTuple
+ Data.Tuple.OneTuple: instance GHC.Base.Monad Data.Tuple.OneTuple.OneTuple
+ Data.Tuple.OneTuple: instance GHC.Base.Monoid a => GHC.Base.Monoid (Data.Tuple.OneTuple.OneTuple a)
+ Data.Tuple.OneTuple: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.OneTuple.OneTuple a)
+ Data.Tuple.OneTuple: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.OneTuple.OneTuple a)
+ Data.Tuple.OneTuple: instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.OneTuple.OneTuple a)
+ Data.Tuple.OneTuple: instance GHC.Enum.Enum a => GHC.Enum.Enum (Data.Tuple.OneTuple.OneTuple a)
+ Data.Tuple.OneTuple: instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.OneTuple.OneTuple a)
+ Data.Tuple.OneTuple: instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.OneTuple.OneTuple a)
Files
- BUGS +0/−5
- CONTRIBUTORS +0/−7
- Changelog.md +4/−0
- Data/Tuple/OneTuple.hs +19/−12
- FAQ +0/−22
- OneTuple.cabal +35/−5
− BUGS
@@ -1,5 +0,0 @@--* OneTuple needs the ability to send email.- Andrew Bromage points out that OneTuple isn't maximally- flexible until it can send email.-
− CONTRIBUTORS
@@ -1,7 +0,0 @@-All of the following have contributed code to the project. Thanks for-your help!--John Dorsey -- initial version-Luke Palmer -- corrected instance Traversable-Neil Mitchell -- pointed out that .cabal file is backward compatible-
+ Changelog.md view
@@ -0,0 +1,4 @@+# 0.2.2++- Add `Semigroup` instances+- Compatible with GHC-8.4
Data/Tuple/OneTuple.hs view
@@ -1,4 +1,3 @@- -- |OneTuple fills the /tuple gap/ with a singleton tuple. -- -- OneTuple /does not support/ the usual parenthesized tuple syntax.@@ -16,13 +15,14 @@ module Data.Tuple.OneTuple (OneTuple(OneTuple), only) where -import Control.Applicative-import Control.Monad-import Control.Monad.Fix-import Data.Foldable-import Data.Ix-import Data.Monoid-import Data.Traversable+import Control.Applicative (Applicative (..), liftA)+import Control.Monad (ap)+import Control.Monad.Fix (MonadFix (..))+import Data.Foldable (Foldable (..))+import Data.Ix (Ix (..))+import Data.Monoid (Monoid (..))+import Data.Semigroup (Semigroup (..))+import Data.Traversable (Traversable (..)) -- |OneTuple is the singleton tuple data type. data OneTuple a@@ -55,23 +55,30 @@ foldl1 _f (OneTuple x) = x instance Traversable OneTuple where+ traverse f (OneTuple x) = fmap OneTuple (f x) sequenceA (OneTuple x) = fmap OneTuple x instance Functor OneTuple where fmap f (OneTuple x) = OneTuple (f x) instance Applicative OneTuple where- pure = return- (<*>) = ap+ pure = OneTuple + OneTuple f <*> OneTuple x = OneTuple (f x)+ _ *> x = x+ x <* _ = x+ instance Monad OneTuple where+ return = pure+ (>>) = (*>) (OneTuple x) >>= f = f x- return = OneTuple +instance (Semigroup a) => Semigroup (OneTuple a) where+ OneTuple x <> OneTuple y = OneTuple (x <> y)+ instance (Monoid a) => Monoid (OneTuple a) where mempty = OneTuple mempty mappend (OneTuple x) (OneTuple y) = OneTuple (mappend x y)- mconcat = Prelude.foldr1 mappend instance MonadFix OneTuple where mfix f = let a = f (only a) in a
− FAQ
@@ -1,22 +0,0 @@--This is a list of Frequently Asked Questions about OneTuple, the-optional Haskell singleton tuple type.--Some of these are, of course, merely anticipated FAQs.--Q 1. What's the point, if you can't support the same syntax as- 'normal' tuples?-A 1. You can hack it up in TH if you want -- patches are welcome!- Simplicity and (near) H98 compatibility were goals in building- OneTuple.--Q 2. Why define 'data OneTuple' instead of just a type alias?-A 2. For laziness and pattern matching similar to other tuples.--Q 3. Isn't this the same as <something> ?-A 3. Could be, but this one's sold as a tuple!--Q 4. Singleton tuples don't make sense! They're isomorphic to their- component type!-A 4. Yes, that's true, up to laziness.-
OneTuple.cabal view
@@ -1,14 +1,44 @@+cabal-version: >=1.10 Name: OneTuple-Version: 0.2.1+Version: 0.2.2+ Synopsis: Singleton Tuple-Description: Singleton Tuple+Category: Data+Description:+ This package provides a singleton tuple data type+ .+ > data OneTuple = OneTuple a+ .+ Note: it's not a @newtype@ Copyright: (c) John Dorsey 2008 License: BSD3 License-file: LICENSE Author: John Dorsey <haskell@colquitt.org>-Maintainer: John Dorsey <haskell@colquitt.org>+Maintainer: Oleg Grenrus <oleg.grenrus@iki.fi>, John Dorsey <haskell@colquitt.org> Stability: experimental Build-type: Simple-Build-depends: base-Exposed-Modules: Data.Tuple.OneTuple+tested-with:+ GHC ==7.0.4+ || ==7.2.2+ || ==7.4.2+ || ==7.6.3+ || ==7.8.4+ || ==7.10.3+ || ==8.0.2+ || ==8.2.2+ || ==8.4.2+extra-source-files:+ Changelog.md++source-repository head+ type: git+ location: https://github.com/phadej/OneTUple.git++library+ default-language: Haskell98+ Exposed-Modules: Data.Tuple.OneTuple+ Build-depends: base >= 4.3 && <4.12++ if !impl(ghc >= 8.0)+ Build-depends: semigroups >=0.18.4 && <0.19