roundtrip-0.1.0.0: src/Text/Roundtrip/Classes.hs
module Text.Roundtrip.Classes where
--import Prelude ()
import Control.Isomorphism.Partial (IsoFunctor)
import Data.Eq (Eq)
import Data.Char (Char)
infixl 3 <|>
infixl 3 <||>
infixr 6 <*>
class ProductFunctor f where
(<*>) :: f alpha -> f beta -> f (alpha, beta)
class Alternative f where
-- one token lookahead for lhs
(<|>) :: f alpha -> f alpha -> f alpha
-- infinite lookahead for lhs
(<||>) :: f alpha -> f alpha -> f alpha
empty :: f alpha
class (IsoFunctor delta, ProductFunctor delta, Alternative delta)
=> Syntax delta where
-- (<$>) :: Iso alpha beta -> delta alpha -> delta beta
-- (<*>) :: delta alpha -> delta beta -> delta (alpha, beta)
-- (<|>) :: delta alpha -> delta alpha -> delta alpha
-- empty :: delta alpha
pure :: Eq alpha => alpha -> delta alpha
rule :: String -> delta beta -> delta alpha -> delta alpha
rule _ _ x = x
ruleInfix :: String -> delta beta -> delta gamma -> delta alpha -> delta alpha
ruleInfix _ _ _ x = x
class Syntax delta => StringSyntax delta where
token :: delta Char