我嘗試重命名Haskell中的文件列表,並使用以下代碼。重命名Haskell中的文件列表
let listOfFullPath = ["/home/name/oldFile.txt"]
let outputList = map(\x -> renameFile x "/home/name/newfile.txt") listOfFullPath
當我運行代碼時,我沒有看到文件被重命名。
有誰知道renameFile
爲什麼不能在map()中工作嗎?
我知道renameFile :: FilePath -> FilePath -> IO()
和我也嘗試以下操作:
let outputList = map(\x -> renameFile x "/home/name/newfile.txt" >> return()) listOfFullpath
您是在GHCi中運行它還是正在編譯的文件的這一部分?無論哪種情況,您都沒有執行「IO」動作。充其量,你正在定義其中的一部分。 – Alec
'let x = print 3'不會打印任何東西:它只定義'x',在執行時會打印3.要執行'x',必須在'main'或其他一些被調用的IO動作內運行(不只是定義)從'main'。同樣,'let xs = [print 3,print 4]'不會打印任何東西。主要的是,如果我們運行'print(length xs)',我們得到2(長度),而IO操作'print 3,print 4'仍然被忽略。如果我們使用'main = sequence xs',則打印3和4。 (我會建議查看一個IO教程。) – chi
我確實擁有並運行它。 – 1234