module Main where import StackADT main :: IO () main = do inp <- getLine let vals::[Int] = map read (words inp) let s = createStack let s2 = foldr push s vals putStr "First element: " print $ top s2 putStr "Second element: " putStrLn . show $ (top . pop) s2 putStr "Third element: " print $ (top . pop . pop) s2 let (_, elems) = until (empty . fst) (\(stk, o) -> (pop stk, o ++ [top stk])) (s2, []) putStr "All the rest:" mapM_ (\x -> putStr " " >> putStr (show x)) (drop 3 elems) putStrLn "" -- Local Variables: -- compile-command: "ghc --make -fglasgow-exts -o main Main.hs" -- End: