packages feed

DigitGroup (empty) → 0.1.0.0

raw patch · 5 files changed

+149/−0 lines, 5 filesdep +basedep +splitsetup-changed

Dependencies added: base, split

Files

+ CHANGELOG.md view
@@ -0,0 +1,5 @@+# Revision history for DigitGroup++## 0.1.0.0 -- YYYY-mm-dd++* First version. Released on an unsuspecting world.
+ DigitGroup.cabal view
@@ -0,0 +1,67 @@+-- Initial DigitGroup.cabal generated by cabal init.  For further+-- documentation, see http://haskell.org/cabal/users-guide/++-- The name of the package.+name:                DigitGroup++-- The package version.  See the Haskell package versioning policy (PVP)+-- for standards guiding when and how versions should be incremented.+-- https://wiki.haskell.org/Package_versioning_policy+-- PVP summary:      +-+------- breaking API changes+--                   | | +----- non-breaking API additions+--                   | | | +--- code changes with no API change+version:             0.1.0.0++-- A short (one-line) description of the package.+synopsis: Group the digits of numbers by lots++-- A longer description of the package.+-- description:++-- The license under which the package is released.+license:             BSD3++-- The file containing the license text.+license-file:        LICENSE++-- The package author(s).+author:              Alan Hawkins++-- An email address to which users can send suggestions, bug reports, and+-- patches.+maintainer:          w@xy30.com++-- A copyright notice.+-- copyright:++category:            Math++build-type:          Simple++-- Extra files to be distributed with the package, such as examples or a+-- README.+extra-source-files:  CHANGELOG.md++-- Constraint on the version of Cabal needed to build this package.+cabal-version:       >=1.10+++library+  -- Modules exported by the library.+  exposed-modules:     Numeric.DigitGroup++  -- Modules included in this library but not exported.+  -- other-modules:++  -- LANGUAGE extensions used by modules in this package.+  -- other-extensions:++  -- Other library packages from which modules are imported.+  build-depends:       base > 4 && <10000, split <10000++  -- Directories containing source files.+  -- hs-source-dirs:++  -- Base language which the package is written in.+  default-language:    Haskell2010+
+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c) 2022, Alan Hawkins++All rights reserved.++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 Alan Hawkins 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.
+ Numeric/DigitGroup.hs view
@@ -0,0 +1,45 @@+module Numeric.DigitGroup where++import Data.List+import Data.List.Split +import Data.Char+import Numeric++digitGroupIntegral :: Integral a => Char -> p -> a -> [Char]+digitGroupIntegral separator _ n = (if n < 0 then "-" else "") +                  ++ (reverse $ intercalate [separator] $ chunksOf 3 (reverse $ map (intToDigit . fromIntegral)  $ nums n))  +                  where +                   nums x = reverse $  unfoldr (\x -> case  divMod x 10 of  { (0,0) -> Nothing  ; (x,y) -> Just (y,x)}) x  ++digitGroupRealFrac :: RealFloat a => Char -> Maybe Char -> a -> [Char]+digitGroupRealFrac separator1 separator2 n = (if n < 0 then "-" else "") +             ++ reverse (intercalate [separator1] (chunksOf 3 $ reverse whole')) +             ++ "." ++  intercalate separator2' (chunksOf 3 frac)+  where +  separator2' = case separator2 of { (Just x) -> [x] ; _ -> [] } +  whole' = if whole == [] then "0" else whole+  (whole,frac)  = splitAt y digitString+  digitString = map intToDigit ( replicate (if y < 0 then abs y else 0 ) 0 ++ xs ++ replicate (y-length xs+if y >= 1 then 1 else 0 ) 0) +  (xs,y) = floatToDigits 10 n+++class DigitGroupShow a where+  digitGroup :: Char -> Maybe Char -> a -> String++instance DigitGroupShow Integer where+  digitGroup separator _ x = digitGroupIntegral separator Nothing x++instance DigitGroupShow Int where+  digitGroup separator _ x = digitGroupIntegral separator Nothing x++instance DigitGroupShow Float where+  digitGroup separator1 separator2 x = digitGroupRealFrac separator1 separator2 x++instance DigitGroupShow Double where+  digitGroup separator1 separator2 x = digitGroupRealFrac separator1 separator2 x++digitGroupComma :: DigitGroupShow a => a -> String+digitGroupComma num = digitGroup ',' (Just ' ') num++digitGroupUnderScore :: DigitGroupShow a => a -> String+digitGroupUnderScore num = digitGroup '_' (Just '_') num
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain