packages feed

numbered-semigroups 0.1.0.0 → 0.1.1.0

raw patch · 2 files changed

+23/−17 lines, 2 filesdep +taggeddep +voiddep ~basedep ~call-stackdep ~semigroupsPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: tagged, void

Dependency ranges changed: base, call-stack, semigroups

API changes (from Hackage documentation)

- Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo 0 [Data.Void.Void]
- Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo 0 [GHC.Base.Maybe a]
- Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo 0 [GHC.Integer.Type.Integer]
- Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo 1 [[Data.Void.Void]]
- Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo 1 [[GHC.Base.Maybe a]]
- Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo 1 [[GHC.Integer.Type.Integer]]
- Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo n Data.Void.Void
- Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo n g => Data.Semigroup.Numbered.SemigroupNo n (GHC.Base.Maybe g)
+ Data.Semigroup.Numbered: infixl 6 ===
+ Data.Semigroup.Numbered: infixr 1 ██
+ Data.Semigroup.Numbered: infixr 2 ━━
+ Data.Semigroup.Numbered: infixr 3 ┃
+ Data.Semigroup.Numbered: infixr 4 ■
+ Data.Semigroup.Numbered: infixr 5 ──
+ Data.Semigroup.Numbered: infixr 6 │
+ Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo 0 [GHC.Base.Void]
+ Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo 0 [GHC.Maybe.Maybe a]
+ Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo 0 [GHC.Num.Integer.Integer]
+ Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo 1 [[GHC.Base.Void]]
+ Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo 1 [[GHC.Maybe.Maybe a]]
+ Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo 1 [[GHC.Num.Integer.Integer]]
+ Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo n GHC.Base.Void
+ Data.Semigroup.Numbered: instance Data.Semigroup.Numbered.SemigroupNo n g => Data.Semigroup.Numbered.SemigroupNo n (GHC.Maybe.Maybe g)
- Data.Semigroup.Numbered: class SemigroupNo (n :: Nat) g where sappendN p x y = sconcatN p $ x :| [y] sconcatN = foldr1 . sappendN stimesN p y₀ x₀ | y₀ <= 0 = error "stimesN: positive multiplier expected" | otherwise = f x₀ y₀ where f x y | even y = f (x <> x) (y `quot` 2) | y == 1 = x | otherwise = g (x <> x) (pred y `quot` 2) x g x y z | even y = g (x <> x) (y `quot` 2) z | y == 1 = x <> z | otherwise = g (x <> x) (pred y `quot` 2) (x <> z) (<>) = sappendN p
+ Data.Semigroup.Numbered: class SemigroupNo (n :: Nat) g

Files

Data/Semigroup/Numbered.hs view
@@ -3,7 +3,7 @@ -- Copyright   : (c) Justus Sagemüller 2017 -- License     : LGPL v3 -- --- Maintainer  : (@) jsagemue $ uni-koeln.de+-- Maintainer  : (@) justussa $ kth.se -- Stability   : experimental -- Portability : portable -- @@ -25,19 +25,23 @@  import GHC.TypeLits import qualified Data.List.NonEmpty as NE-import Data.Foldable+import qualified Data.Foldable as Foldable  import Data.Proxy import Data.Void +import Control.Applicative+ import Data.CallStack (HasCallStack)  class SemigroupNo (n :: Nat) g where+  {-# MINIMAL sappendN | sconcatN #-}+   sappendN :: proxy n -> g -> g -> g   sappendN p x y = sconcatN p $ x NE.:|[y]      sconcatN :: proxy n -> NE.NonEmpty g -> g-  sconcatN = foldr1 . sappendN+  sconcatN = Foldable.foldr1 . sappendN      stimesN :: (Integral b, HasCallStack) => proxy n -> b -> g -> g    -- Adapted from@@ -58,7 +62,7 @@  instance (SemigroupNo n g) => SemigroupNo n (a -> g) where   sappendN p f g x = sappendN p (f x) (g x)-  sconcatN p fs x = sconcatN p $ ($x)<$>fs+  sconcatN p fs x = sconcatN p $ ($ x)<$>fs   stimesN p n f = stimesN p n . f  instance (SemigroupNo n g) => SemigroupNo n (Maybe g) where@@ -97,14 +101,14 @@   sappendN p (x:xs) (y:ys) = sappendN p x y : sappendN p xs ys  instance SemigroupNo 1 [[Void]] where sappendN _ = (++)-instance SemigroupNo 1 [[()]] where sconcatN _ = paddedLines () . concat-instance SemigroupNo 1 [[Char]] where sconcatN _ = paddedLines ' ' . concat-instance SemigroupNo 1 [[Int]] where sconcatN _ = paddedLines 0 . concat-instance SemigroupNo 1 [[Integer]] where sconcatN _ = paddedLines 0 . concat-instance SemigroupNo 1 [[Float]] where sconcatN _ = paddedLines 0 . concat-instance SemigroupNo 1 [[Double]] where sconcatN _ = paddedLines 0 . concat-instance SemigroupNo 1 [[Rational]] where sconcatN _ = paddedLines 0 . concat-instance SemigroupNo 1 [[Maybe a]] where sconcatN _ = paddedLines Nothing . concat+instance SemigroupNo 1 [[()]] where sconcatN _ = paddedLines () . Foldable.concat+instance SemigroupNo 1 [[Char]] where sconcatN _ = paddedLines ' ' . Foldable.concat+instance SemigroupNo 1 [[Int]] where sconcatN _ = paddedLines 0 . Foldable.concat+instance SemigroupNo 1 [[Integer]] where sconcatN _ = paddedLines 0 . Foldable.concat+instance SemigroupNo 1 [[Float]] where sconcatN _ = paddedLines 0 . Foldable.concat+instance SemigroupNo 1 [[Double]] where sconcatN _ = paddedLines 0 . Foldable.concat+instance SemigroupNo 1 [[Rational]] where sconcatN _ = paddedLines 0 . Foldable.concat+instance SemigroupNo 1 [[Maybe a]] where sconcatN _ = paddedLines Nothing . Foldable.concat instance (SemigroupNo 1 [[a]]) => SemigroupNo 1 [[[a]]] where   sappendN _ [] ys = ys   sappendN _ xs [] = xs
numbered-semigroups.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                numbered-semigroups-version:             0.1.0.0+version:             0.1.1.0 synopsis:            A sequence of semigroups, for composing stuff in multiple spatial directions. description:         Some types are composable in multiple “directions”, either in                      a literal sense (<http://hackage.haskell.org/package/diagrams diagrams>@@ -16,7 +16,7 @@ license:             LGPL-3 license-file:        LICENSE author:              Justus Sagemüller-maintainer:          (@) jsagemue $ uni-koeln.de+maintainer:          (@) justussa $ kth.se -- copyright:            category:            Data build-type:          Simple@@ -27,8 +27,10 @@   exposed-modules:     Data.Semigroup.Numbered   -- other-modules:          -- other-extensions:    -  build-depends:       base >=4.8 && <4.11-                       , semigroups-                       , call-stack+  build-depends:       base >=4.6 && <4.21+                       , semigroups <0.21+                       , void <0.8+                       , tagged <0.9+                       , call-stack <0.5   -- hs-source-dirs:         default-language:    Haskell2010