From fa9a9758e0d15abe670fbbfd8efa1fce013b1414 Mon Sep 17 00:00:00 2001 From: Joel Martin Date: Tue, 23 Dec 2014 22:37:43 -0700 Subject: Haskell: steps 4-6. Line editing. Simpler fn calls. --- haskell/Readline.hs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 haskell/Readline.hs (limited to 'haskell/Readline.hs') diff --git a/haskell/Readline.hs b/haskell/Readline.hs new file mode 100644 index 0000000..483c827 --- /dev/null +++ b/haskell/Readline.hs @@ -0,0 +1,30 @@ +module Readline +( readline, load_history ) +where + +-- Pick one of these: +-- GPL license +import qualified System.Console.Readline as RL +-- BSD license +--import qualified System.Console.Editline.Readline as RL + +import System.Directory (getHomeDirectory) + +history_file = do + home <- getHomeDirectory + return $ home ++ "/.mal-history" + +load_history = do + hfile <- history_file + content <- readFile hfile + mapM RL.addHistory (lines content) + +readline prompt = do + hfile <- history_file + maybeLine <- RL.readline prompt + case maybeLine of + Just line -> do + appendFile hfile (line ++ "\n") + RL.addHistory line + return maybeLine + _ -> return maybeLine -- cgit v1.2.3