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

Jon*_*han 0 haskell

所以我将浏览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)

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

Dan*_*ner 5

选项上的模式匹配.

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)