Reversing a list with continuations
module Main where
import Prelude hiding (reverse)
reverse :: [a] -> [a]
reverse ls = run kInit ls
where
kInit :: ([a] -> [a]) -> [a]
kInit f = f []
run :: (([a] -> [a]) -> [a])
-> [a]
-> [a]
run k [] = k id
run k (x : xs') = run ($ k (x :)) xs'
main :: IO ()
main = print $ reverse ([1..10] :: [Int])