所以我将浏览CmdArgs文档中的示例,并且我正在尝试构建Hello World程序,以便创建一个简单的CLI程序,该程序将文件名作为输入,并显示该文件的内容(如cat).但我是Haskell的初学者,几乎不知道我在做什么.这是我到目前为止所拥有的:
{-# LANGUAGE DeriveDataTypeable #-}
module ShowFile where
import System.Console.CmdArgs
data ShowFile = ShowFile {file :: Maybe FilePath}
deriving (Show, Data, Typeable)
showFile = ShowFile
{file = def &= typ "FILE" &= argPos 0}
main = print =<< cmdArgs showFile
Run Code Online (Sandbox Code Playgroud)
所以跑步runhaskell mycat.hs test.txt表明:
ShowFile {file = Just "test.txt"}
Run Code Online (Sandbox Code Playgroud)
有些东西在起作用!现在如何让它显示内容test.txt呢?我一直在尝试这样的事情:
main = getContents showFile
Run Code Online (Sandbox Code Playgroud)
但还没有发现正确的事情.
选项上的模式匹配.
main = do
options <- cmdArgs showFile
contents <- case options of
ShowFile { file = Nothing } -> getContents
ShowFile { file = Just f } -> readFile f
putStr contents
Run Code Online (Sandbox Code Playgroud)