我正在使用filemanip的System.FilePath.Find
模塊遞歸查找所有需要處理的文件(在這裏我將使用打印到控制檯作爲要執行的操作,爲了不混淆的事情)。現在,這個代碼:靈活的參數數量haskell程序
import System.Environment (getArgs)
import System.FilePath (FilePath)
import System.Directory (doesDirectoryExist, getDirectoryContents,doesFileExist)
import Control.Monad
import System.FilePath.Find (find,always,fileType,(==?),FileType(..),(&&?),extension)
main= do
[dbFile,input]<- getArgs
files <- findFiles input
mapM_ putStrLn files
return()
searchExtension :: String
searchExtension = ".hs"
findFiles :: FilePath -> IO [String]
findFiles = find (always) (fileType ==? RegularFile &&? extension ==? searchExtension)
與此調用
./myprog TET效果很好。
在這種情況下,get
參數被忽略(將在後面輸出的數據庫文件),第二個參數被遞歸搜索匹配的文件。它也允許我指定一個文件,這是完美的!
,但我希望能夠指定
./myprog TET PATH1 PATH2 PATH4文件1
但這當然失敗的模式匹配:
./myprog tet。 。
myprogt:用戶錯誤(模式匹配失敗在做在myprog.hs表達:11:9-22)
現在,我該如何使這個計劃更靈活,讓我可以超過兩個參數?
對不起,實際上,我的Haskell知識是有限的,但對於我在第一個項目中必須做的每件新事物都是有限的。
完美!謝謝! – 2014-09-19 09:46:14