packages feed

composite-binary (empty) → 0.7.4.0

raw patch · 3 files changed

+54/−0 lines, 3 filesdep +basedep +binarydep +composite-basesetup-changed

Dependencies added: base, binary, composite-base

Files

+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ composite-binary.cabal view
@@ -0,0 +1,34 @@+cabal-version: 1.12++-- This file has been generated from package.yaml by hpack version 0.33.0.+--+-- see: https://github.com/sol/hpack+--+-- hash: a6ec3b30f6193a5ac05adee9358e841a0f1985c3a23c48d9ceafc78ec0621524++name:           composite-binary+version:        0.7.4.0+synopsis:       Orphan binary instances.+description:    Binary instance for (:->) and Record.+category:       Records+homepage:       https://github.com/ConferOpenSource/composite#readme+author:         Confer Health, Inc+maintainer:     oss@vitalbio.com+copyright:      2017 Confer Health, Inc., 2020 Vital Biosciences+license:        BSD3+build-type:     Simple++library+  exposed-modules:+      Composite.Record.Binary+  other-modules:+      Paths_composite_binary+  hs-source-dirs:+      src+  default-extensions: DataKinds FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving LambdaCase MultiParamTypeClasses MultiWayIf OverloadedStrings PatternSynonyms PolyKinds QuasiQuotes RankNTypes ScopedTypeVariables StandaloneDeriving StrictData TemplateHaskell TupleSections TypeFamilies TypeOperators ViewPatterns+  ghc-options: -Wall -O2+  build-depends:+      base >=4.7 && <5+    , binary >=0.8 && <0.9+    , composite-base >=0.7 && <0.8+  default-language: Haskell2010
+ src/Composite/Record/Binary.hs view
@@ -0,0 +1,18 @@+{-# LANGUAGE UndecidableInstances #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Composite.Record.Binary where++import Composite.Record((:->), Record, Rec((:&)), val, getVal)+import Control.Applicative(liftA2)+import Data.Binary(Binary(put, get))+import Data.Functor.Identity(runIdentity)++instance Binary a => Binary (s :-> a) where+  put = put . getVal+  get = fmap (runIdentity . val) get++instance Binary (Record '[])++instance (Binary x, Binary (Record xs)) => Binary (Record (x : xs)) where+  put (x :& xs) = put x >> put xs+  get = liftA2 (:&) get get