cobot-0.1.1.0: src/Bio/Utils/Monomer.hs
module Bio.Utils.Monomer
( Symbol(..)
, FromSymbol(..)
, ThreeSymbols(..)
, FromThreeSymbols (..)
) where
import Data.Text ( Text )
class Symbol a where
symbol :: a -> Char
instance Symbol Char where
symbol = id
class FromSymbol a where
fromSymbol :: Char -> Maybe a
fromSymbol = either (const Nothing) Just . fromSymbolE
fromSymbolE :: Char -> Either Char a
fromSymbolE c = maybe (Left c) Right $ fromSymbol c
instance FromSymbol Char where
fromSymbolE = Right
class ThreeSymbols a where
threeSymbols :: a -> Text
class FromThreeSymbols a where
fromThreeSymbols :: Text -> Maybe a