packages feed

aterm-utils 0.2.0.1 → 0.2.0.2

raw patch · 2 files changed

+16/−3 lines, 2 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ ATerm.Generics: atermToTriple :: (FromATerm a, FromATerm b, FromATerm c) => ATerm -> Maybe (a, b, c)
+ ATerm.Generics: instance (ToATerm a, ToATerm b, ToATerm c) => ToATerm (a, b, c)
+ ATerm.Generics: tripleToATerm :: (ToATerm a, ToATerm b, ToATerm c) => (a, b, c) -> ATerm

Files

aterm-utils.cabal view
@@ -1,5 +1,5 @@ name:                aterm-utils-version:             0.2.0.1+version:             0.2.0.2 synopsis:            Utility functions for working with aterms as generated by Minitermite -- description:          license:             BSD3
src/ATerm/Generics.hs view
@@ -68,6 +68,8 @@                                                          toATermList = listToATerm instance ToATerm a              => ToATerm [a]     where toATerm     = toATermList +instance (ToATerm a, ToATerm b, ToATerm c) => ToATerm (a,b,c)   where toATerm     = tripleToATerm+ -- Base type implementations integralToATerm :: Integral a => a -> ATerm integralToATerm x = AInt (toInteger x) []@@ -84,6 +86,9 @@ tupleToATerm :: (ToATerm a, ToATerm b) => (a,b) -> ATerm tupleToATerm (a,b) = AAppl [] [toATerm a, toATerm b] [] +tripleToATerm :: (ToATerm a, ToATerm b, ToATerm c) => (a,b,c) -> ATerm+tripleToATerm (a,b,c) = AAppl [] [toATerm a, toATerm b, toATerm c] []+ ------------------------------------------------------------------------ -- Deserialization ------------------------------------------------------------------------@@ -104,11 +109,11 @@ instance FromATerm                                  Bool instance FromATerm                                  Float instance FromATerm                                  Double-instance (FromATerm a, FromATerm b, FromATerm c) => FromATerm (a, b, c) instance (FromATerm a, FromATerm b)              => FromATerm (Either a b) instance FromATerm a                             => FromATerm (Maybe a) -instance (FromATerm a, FromATerm b)              => FromATerm (a,b) where fromATerm = atermToTuple+instance (FromATerm a, FromATerm b)              => FromATerm (a,b)     where fromATerm = atermToTuple+instance (FromATerm a, FromATerm b, FromATerm c) => FromATerm (a, b, c) where fromATerm = atermToTriple  instance                FromATerm Int     where fromATerm     = atermToIntegral instance                FromATerm Integer where fromATerm     = atermToIntegral@@ -140,6 +145,14 @@   b' <- fromATerm b   return (a',b') atermToTuple _                   = Nothing++atermToTriple :: (FromATerm a, FromATerm b, FromATerm c) => ATerm -> Maybe (a,b,c)+atermToTriple (AAppl "" [a,b,c] []) = do+  a' <- fromATerm a+  b' <- fromATerm b+  c' <- fromATerm c+  return (a',b',c')+atermToTriple _                     = Nothing ------------------------------------------------------------------------ -- Generic data type deserialization ------------------------------------------------------------------------