tools-yj 0.1.0.35 → 0.1.0.36
raw patch · 3 files changed
+49/−2 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.Word.Crc32: instance GHC.Internal.Show.Show Data.Word.Crc32.C
- Text.Show.ToolsYj: instance GHC.Internal.Show.Show a => Text.Show.ToolsYj.ShowIO a
+ Data.Sequence.Word8: fromBits :: Bits b => b -> Seq Word8
+ Data.Sequence.Word8: fromBits' :: FiniteBits b => b -> Seq Word8
+ Data.Sequence.Word8: fromBitsBE' :: FiniteBits b => b -> Seq Word8
+ Data.Sequence.Word8: toBits :: Bits b => Seq Word8 -> b
+ Data.Sequence.Word8: toBits' :: FiniteBits b => Seq Word8 -> Maybe b
+ Data.Sequence.Word8: toBitsBE :: Bits b => Seq Word8 -> b
+ Data.Word.Crc32: instance GHC.Show.Show Data.Word.Crc32.C
+ Text.Show.ToolsYj: instance GHC.Show.Show a => Text.Show.ToolsYj.ShowIO a
Files
- src/Data/Sequence/Word8.hs +47/−0
- src/Data/Word/Crc32.hs +0/−1
- tools-yj.cabal +2/−1
+ src/Data/Sequence/Word8.hs view
@@ -0,0 +1,47 @@+{-# LANGUAGE ImportQualifiedPost #-}+{-# LANGUAGE BlockArguments #-}+{-# LANGUAGE ScopedTypeVariables, TypeApplications #-}+{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}++module Data.Sequence.Word8 (++ -- * FROM/TO BITS++ fromBits, fromBits', toBits, toBits', fromBitsBE', toBitsBE++ ) where++import Data.Bits+import Data.Bits.ToolsYj+import Data.Bool+import Data.Word+import Data.Sequence qualified as Seq+import Data.Sequence.ToolsYj qualified as Seq++fromBits :: Bits b => b -> Seq.Seq Word8+fromBits = Seq.unfoldr \b ->+ bool Nothing (Just (bitsToBits 8 b, b `shiftR` 8)) (b /= zeroBits)++fromBits' :: FiniteBits b => b -> Seq.Seq Word8+fromBits' b0 = go (finiteBitSize b0 `div` 8) b0+ where+ go 0 _ = Seq.Empty+ go n b = bitsToBits 8 b `Seq.cons` go (n - 1) (b `shiftR` 8)++toBits :: Bits b => Seq.Seq Word8 -> b+toBits = foldr (\b s -> bitsToBits 8 b .|. s `shiftL` 8) zeroBits++toBits' :: forall b . FiniteBits b => Seq.Seq Word8 -> Maybe b+toBits' bs = bool+ Nothing+ (Just $ foldr (\b s -> bitsToBits 8 b .|. s `shiftL` 8) zeroBits bs)+ (8 * length bs <= finiteBitSize @b undefined)++fromBitsBE' :: FiniteBits b => b -> Seq.Seq Word8+fromBitsBE' b0 = go (finiteBitSize b0 `div` 8) b0+ where+ go 0 _ = Seq.Empty+ go n b = go (n - 1) (b `shiftR` 8) `Seq.snoc` bitsToBits 8 b++toBitsBE :: Bits b => Seq.Seq Word8 -> b+toBitsBE = foldl (\s b -> bitsToBits 8 b .|. s `shiftL` 8) zeroBits
src/Data/Word/Crc32.hs view
@@ -1,7 +1,6 @@ {-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE BlockArguments, OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE RequiredTypeArguments #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE FlexibleContexts #-}
tools-yj.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: tools-yj-version: 0.1.0.35+version: 0.1.0.36 synopsis: Tribial tools description: Please see the README on GitHub at <https://github.com/YoshikuniJujo/tools-yj#readme> category: Tools@@ -40,6 +40,7 @@ Data.Maybe.ToolsYj Data.Ord.ToolsYj Data.Sequence.ToolsYj+ Data.Sequence.Word8 Data.Sequences.ToolsYj Data.Text.ToolsYj Data.Tuple.ToolsYj