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 +1/−1
- src/ATerm/Generics.hs +12/−3
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 ------------------------------------------------------------------------