murder-1.3.2: src/Language/Grammars/Grammar/AG.hs
module Language.Grammars.Grammar.AG where
import Language.Grammars.Grammar
import Control.Applicative
------------------------
-- IDIOMS FOR AG
instance Idiomatic l env f g => Idiomatic l env (a -> f) (Symbol a TAttT env -> g) where
-- idiomatic isf is = idiomatic (isf <*> ((\x -> x) <$> (sym is :: PreProductions l env a)))
idiomatic isf is = idiomatic (isf <*> (sym is :: PreProductions l env a))
instance Idiomatic l env f g => Idiomatic l env (DTerm String -> f) (Kw -> g) where
-- idiomatic isf (Kw is) = idiomatic (isf <*> ((\x -> x) <$> (tr is)))
idiomatic isf (Kw is) = idiomatic (isf <*> (tr is))
newtype SF a = SF { unSF :: a }
instance Idiomatic l env f g => Idiomatic l env (a -> f) (SF a -> g) where
idiomatic isf (SF f) = idiomatic (isf <*> (pure f :: PreProductions l env a))