#!/usr/bin/runghc module Recursion05Reverse where import Data.List -- This one is inefficient reverseMe :: [a] -> [a] reverseMe [] = [] reverseMe (x : xs) = reverseMe xs ++ [x] reverseEff :: [a] -> [a] -> [a] reverseEff [] new = new reverseEff (x : xs) new = reverseEff xs (x : new) reverseFoldl :: [a] -> [a] reverseFoldl = foldl' (\acc x -> x : acc) [] reverseFlip :: [a] -> [a] reverseFlip = foldl' (flip (:)) [] main :: IO () main = do putStrLn (reverse "evil") putStrLn (reverseMe "taxes") putStrLn (reverseEff "backwards" []) putStrLn (reverseFoldl "reverse") putStrLn (reverseFlip "park") -- boobytrap