packages feed

type-cereal 0.1 → 0.1.1

raw patch · 2 files changed

+11/−4 lines, 2 files

Files

Type/Serialize/Base.hs view
@@ -14,7 +14,7 @@  -} module Type.Serialize.Base-  (Serialize, encode, serializeType, serializeTypeAsHash) where+  (Serialize, encode, serializeType, serializeTypeAsHash, serializeTypeAsHash_) where  import Type.Spine.TH (tyConSignature) import Type.Spine.Stage0 (kTypeG)@@ -52,18 +52,25 @@                 toDigits (exactly 3 . take 3 . flexible) (H.asWord64 $ H.hash uid) .                 encode $ uid   (:[]) `fmap` tySynInstD ''Serialize [qk `appT` conT n] base128+serializeType n = fail $ "serializeType expects a global name: " ++ show n  -- | @serializeType@ can result in very large types, so we prefer the -- @data-hash@ hash of the @NameG@'s serialization. serializeTypeAsHash :: Name -> Q [Dec]-serializeTypeAsHash n@(Name (occString -> occ)-                (NameG _ (pkgString -> pkg) (modString -> mod))) = do+serializeTypeAsHash n = do   (ks, k) <- tyConSignature n+  serializeTypeAsHash_ n ks k +-- | @serializeType@ can result in very large types, so we prefer the+-- @data-hash@ hash of the @NameG@'s serialization.+serializeTypeAsHash_ :: Name -> [Kind] -> Kind -> Q [Dec]+serializeTypeAsHash_ n@(Name (occString -> occ)+                (NameG _ (pkgString -> pkg) (modString -> mod))) ks k = do   let qk = kTypeG $ foldr ArrowK k ks       uid = (occ, mod, pkg)       base128 = return . toDigits_ flexible . H.asWord64 . H.hash $ uid   (:[]) `fmap` tySynInstD ''Serialize [qk `appT` conT n] base128+serializeTypeAsHash_ n _ _ = fail $ "serializeTypeAsHash expects a global name: " ++ show n  tvb_kind (PlainTV _) = StarK tvb_kind (KindedTV _ k) = k
type-cereal.cabal view
@@ -1,5 +1,5 @@ Name:           type-cereal-Version:        0.1+Version:        0.1.1 License:        BSD3 License-File:   LICENSE Author:         Nicolas Frisby <nicolas.frisby@gmail.com>