Skip to content

Instantly share code, notes, and snippets.

@mizukmb
Created November 25, 2017 09:51
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save mizukmb/adbe41d5a810b6b001e20cb7bb256890 to your computer and use it in GitHub Desktop.
import System.IO
import System.Directory
import Data.List
import Control.Exception
main = do
contents <- readFile "todo.txt"
let todoTasks = lines contents
numberedTasks = zipWith (\n line -> show n ++ " - " ++ line) [0..] todoTasks
putStrLn "There are your TO-DO items:"
mapM_ putStrLn numberedTasks
putStrLn "Which one do you want to delete?"
numberString <- getLine
let number = read numberString
newTodoItems = unlines $ delete (todoTasks !! number) todoTasks
bracketOnError (openTempFile "." "temp")
(\(tempName, tempHandle) -> do
hClose tempHandle
removeFile tempName)
(\(tempName, tempHandle) -> do
hPutStr tempHandle newTodoItems
hClose tempHandle
removeFile "todo.txt"
renameFile tempName "todo.txt")
@mizukmb
Copy link
Author

mizukmb commented Nov 25, 2017

入出力が出始めた途端に手続き型っぽくなってきた

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment