{-# LANGUAGE DeriveDataTypeable #-}moduleDebian.Version.Internal(DebianVersion(..),Numeric(..),NonNumeric(..),Found(..))whereimportData.Data(Data)importData.Typeable(Typeable)-- Currently we store the original version string in the data-type so-- that we can faithfully reproduce it quickly. Currently we do not-- have any way to modify a version number -- so this works fine. May-- have to change later.dataDebianVersion=DebianVersionString(FoundInt,NonNumeric,FoundNonNumeric)deriving(Data,Typeable)dataNonNumeric=NonNumericString(FoundNumeric)deriving(Show,Data,Typeable)dataNumeric=NumericInt(MaybeNonNumeric)deriving(Show,Data,Typeable)dataFounda=Found{unFound::a}|Simulated{unFound::a}deriving(Show,Data,Typeable)instance(Eqa)=>Eq(Founda)wheref1==f2=(unFoundf1)==(unFoundf2)instance(Orda)=>Ord(Founda)wherecomparef1f2=compare(unFoundf1)(unFoundf2)