module Equation.HughesList where

import Language.Haskell.TH
import Language.Haskell.ER.Syntax
import Language.Haskell.ER.HaskellRewrite
import Language.Haskell.ER.MiscRewrite
import Language.Haskell.ER.Utils
import Language.Haskell.ER.Frees
import Program.HughesList
import HughesList


dictionary :: [ UniHaskellRewrite ]
dictionary = map HaskellRewriteExp
	[ equation "@/Eureka/Program/HughesList/Equations/e = a2c (c2a e)"
	  	   $(quote [| a |])
		   $(quote [| a2c (c2a a) |])
             Nothing
        , equation "/Program/HughesList/Equations/c2a (x:xs) = (x :) . c2a xs"
	           $(quote [| c2a (x:xs) |])
		   $(quote [| (x :) . c2a xs |])       
             Nothing
        , equation "/Program/HughesList/Equations/c2a (xs ++ ys) = (c2a xs) . (c2a ys)"
	           $(quote [| c2a (xs ++ ys) |])
		   $(quote [| c2a xs . c2a ys |])       
             Nothing
	, equation "/Program/HughesList/Equations/Fusion"
		   $(quote [| c2a (a2c a) |])
	  	   $(quote [| a |])
             Nothing
        ]
