如何修复我的简单Haskell CLI程序以显示文件的内容?

时间:2017-09-11 16:31:38

标签: haskell

所以我正在查看CmdArgs documentation中的示例,并且我正在尝试构建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

所以正在运行runhaskell mycat.hs test.txt显示:

ShowFile {file = Just "test.txt"}

所以有些东西在起作用!现在如何让它显示test.txt的内容呢?我一直在尝试这样的事情:

main = getContents showFile

但还没有发现正确的事情。

1 个答案:

答案 0 :(得分:5)

选项上的模式匹配。

main = do
    options <- cmdArgs showFile
    contents <- case options of
        ShowFile { file = Nothing } -> getContents
        ShowFile { file = Just f  } -> readFile f
    putStr contents