packages feed

type-level-kv-list 2.0.1.0 → 2.0.1.1

raw patch · 2 files changed

+40/−1 lines, 2 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ Data.KVList: instance (Data.KVList.ShowFields (Data.KVList.KVList kvs), GHC.Show.Show v) => Data.KVList.ShowFields (Data.KVList.KVList ((k Data.KVList.:= v) : kvs))
+ Data.KVList: instance Data.KVList.ShowFields (Data.KVList.KVList '[])
+ Data.KVList: instance Data.KVList.ShowFields (Data.KVList.KVList kvs) => GHC.Show.Show (Data.KVList.KVList kvs)

Files

src/Data/KVList.hs view
@@ -29,6 +29,8 @@  import Prelude +import Data.Functor ((<&>))+import qualified Data.List as List import Data.Kind (Constraint, Type) import Data.Typeable (Typeable, typeOf) import GHC.TypeLits (KnownSymbol, Symbol, TypeError, ErrorMessage(Text))@@ -53,6 +55,43 @@ data KVList (kvs :: [Type]) where   KVNil :: KVList '[]   KVCons :: (KnownSymbol key) => key := v -> KVList xs -> KVList ((key := v) ': xs)+++{-| -}+instance ShowFields (KVList kvs) => Show (KVList kvs) where+  show kvs =+    List.unlines $+      "KVList.empty" : showFields kvs++class ShowFields a where+  showFields :: a -> [String]++instance ShowFields (KVList '[]) where+  showFields _ = []++instance ( ShowFields (KVList kvs)+         , Show v+         ) => ShowFields (KVList ((k := v) ': kvs)) where+  showFields (KVCons (k := v) next) =+    let+      firstLine str =+        List.unwords+          [ "&="+          , "#" <> show k+          , ":="+          , str+          ]+    in+    ( case List.lines $ show v of+        [] -> [ firstLine "" ]+        [a] -> [ firstLine a ]+        as ->+          List.concat+            [ [ firstLine "(" ]+            , as <&> \x -> "  " ++ x+            , [ ")" ]+            ]+    ) ++ showFields next  {-| -} empty :: KVList '[]
type-level-kv-list.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           type-level-kv-list-version:        2.0.1.0+version:        2.0.1.1 synopsis:       Type level Key-Value list. description:    This library provides a brief implementation for extensible records. category:       Data