Guest User

Untitled

a guest
Feb 21st, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. import System.Environment
  2. import System.IO
  3. import Data.List (delete)
  4. import qualified Data.ByteString as B
  5. import qualified Data.ByteString.Char8 as W
  6.  
  7. add :: String -> String -> IO ()
  8. add f t = appendFile f ("[ ] " ++ t ++ "\n")
  9.  
  10. remove :: String -> Int -> IO ()
  11. remove f t = do list <- B.readFile f
  12. let tasks = W.lines list
  13. let newlist = W.unlines $ delete (tasks !! t) tasks
  14. B.writeFile f newlist
  15.  
  16. complete :: String -> Int -> IO ()
  17. complete f t = do list <- B.readFile f
  18. let tasks = W.lines list
  19. let task = tasks !! t
  20. let newlist = W.unlines $ (delete task tasks) ++ [(W.append (W.pack "[*]") (W.drop 3 task))]
  21. B.writeFile f newlist
  22.  
  23. main = do args <- getArgs
  24. case args of
  25. [f, "add", task] -> add f task
  26. [f, "complete", task] -> complete f (read task :: Int)
  27. [f, "remove", task] -> remove f (read task :: Int)
  28. _ -> putStrLn "Invalid arguments."
Add Comment
Please, Sign In to add comment