ExtSign.hs revision 140287998aa8592c9c403bd9e308e447ba92ae11
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder{- |
c63ebf815c8a874525cf18670ad74847f7fc7b26Christian MaederModule : $Header$
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederDescription : signatures with symbol sets
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederCopyright : (c) DFKI GmbH, Uni Bremen 2002-2007
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederLicense : GPLv2 or higher, see LICENSE.txt
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederMaintainer : Christian.Maeder@dfki.de
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederStability : provisional
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederPortability : portable
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederSome functions that operate over signatures need to be extended to work over
f4a2a20e49f41b2afa657e5e64d9e349c7faa091Christian Maedersignatures with symbol sets for every logic
f2f9df2e17e70674f0bf426ed1763c973ee4cde0Christian Maeder-}
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maeder
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maedermodule Common.ExtSign where
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederimport qualified Data.Set as Set
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maederimport Common.Doc
a53841f6d6e86ac751c12a33dc8aadf53f59d977Klaus Luettichimport Common.DocUtils
a53841f6d6e86ac751c12a33dc8aadf53f59d977Klaus Luettich
a53841f6d6e86ac751c12a33dc8aadf53f59d977Klaus Luettich-- | signatures with symbol sets.
a53841f6d6e86ac751c12a33dc8aadf53f59d977Klaus Luettich-- (The Ord instance is needed for the ATC generation)
a737caf82de97c1907027c03e4b4509eb492b4b8Christian Maederdata ExtSign sign symbol = ExtSign
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder { plainSign :: sign
68d10d143f29fcff3c637ba24f90e983995ceae6Christian Maeder , nonImportedSymbols :: Set.Set symbol
96646aed2ae087b942ae23f15bbe729a8f7c43d3Christian Maeder } deriving (Show, Read)
01e383014b555bbcf639c0ca60c5810b3eff83c0Christian Maeder
3b06e23643a9f65390cb8c1caabe83fa7e87a708Till Mossakowskiinstance (Ord sign) => Eq (ExtSign sign symbol) where
9dac90ec2be2a72e03893095461960d483fe2fc2Christian Maeder a == b = compare a b == EQ
5e5d3e82af3bc2834f8718a52d9f45da80220273Dominik Luecke
124c859ba4741d5e36d5d98634886b430b7af093Christian Maederinstance (Ord sign) => Ord (ExtSign sign symbol) where
ce8b15da31cd181b7e90593cbbca98f47eda29d6Till Mossakowski compare (ExtSign s1 _) (ExtSign s2 _) = compare s1 s2
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maeder
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maederinstance (Pretty sign, Pretty symbol)
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder => Pretty (ExtSign sign symbol) where
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder pretty (ExtSign s sys) =
a1ed34933c266ce85066acb0d7b20c90cb8eb213Christian Maeder sep [pretty s, if Set.null sys then empty else pretty sys]
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus LuettichmkExtSign :: sign -> ExtSign sign symbol
b1f59a4ea7c96f4c03a4d7cfcb9c5e66871cfbbbChristian MaedermkExtSign s = ExtSign s Set.empty
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder