module Program.PreludeList 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; defns = $(quoteModule "main" "PreludeList" [d| -- automatically included -- foldr, foldr1, scanr, and scanr1 are the right-to-left duals of the -- above functions. foldr :: (a -> b -> b) -> b -> [a] -> b foldr f z [] = z foldr f z (x:xs) = f x (foldr f z xs) reverse [] = [] reverse (x:xs) = reverse xs ++ [x] --[] ++ ys = ys --(x:xs) ++ ys = x : (xs ++ ys) --build_n :: ([c] -> [c]) -> [c] --build_n g = g [] |]) }