packages feed

aterm-utils 0.2.0.0 → 0.2.0.1

raw patch · 2 files changed

+13/−4 lines, 2 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ ATerm.Generics: atermToTuple :: (FromATerm a, FromATerm b) => ATerm -> Maybe (a, b)
+ ATerm.Generics: tupleToATerm :: (ToATerm a, ToATerm b) => (a, b) -> ATerm

Files

aterm-utils.cabal view
@@ -1,5 +1,5 @@ name:                aterm-utils-version:             0.2.0.0+version:             0.2.0.1 synopsis:            Utility functions for working with aterms as generated by Minitermite -- description:          license:             BSD3
src/ATerm/Generics.hs view
@@ -58,9 +58,9 @@ instance                           ToATerm Double instance                           ToATerm () instance ToATerm a              => ToATerm (Maybe a)-instance (ToATerm a, ToATerm b) => ToATerm (a,b) instance (ToATerm a, ToATerm b) => ToATerm (Either a b) +instance (ToATerm a, ToATerm b) => ToATerm (a,b)   where toATerm     = tupleToATerm instance                           ToATerm Char    where toATerm     = showToATerm                                                          toATermList = stringToATerm instance                           ToATerm Int     where toATerm     = integralToATerm@@ -81,6 +81,9 @@ stringToATerm :: String -> ATerm stringToATerm s = AAppl (show s) [] [] +tupleToATerm :: (ToATerm a, ToATerm b) => (a,b) -> ATerm+tupleToATerm (a,b) = AAppl [] [toATerm a, toATerm b] []+ ------------------------------------------------------------------------ -- Deserialization ------------------------------------------------------------------------@@ -101,11 +104,12 @@ instance FromATerm                                  Bool instance FromATerm                                  Float instance FromATerm                                  Double-instance (FromATerm a, FromATerm b)              => FromATerm (a,b) 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 Int     where fromATerm     = atermToIntegral instance                FromATerm Integer where fromATerm     = atermToIntegral instance                FromATerm Char    where fromATerm     = atermToRead@@ -130,7 +134,12 @@ atermToList (AList as _) = mapM fromATerm as atermToList _            = Nothing -+atermToTuple :: (FromATerm a, FromATerm b) => ATerm -> Maybe (a,b)+atermToTuple (AAppl "" [a,b] []) = do+  a' <- fromATerm a+  b' <- fromATerm b+  return (a',b')+atermToTuple _                   = Nothing ------------------------------------------------------------------------ -- Generic data type deserialization ------------------------------------------------------------------------