2011-12-08 114 views
1

我嘗試使用CmdArgs從命令行參數提取的整數提取詮釋時: ./prg --byte = 512類型不匹配與cmdArgs

在下面的代碼不編譯和編譯器說Couldn't match expected type `Int' with actual type `Strlen -> Int'。現在,我認爲我認爲字節是一個整數?不是嗎?

{-# LANGUAGE DeriveDataTypeable #-} 
import System.Console.CmdArgs 

data Strlen = Strlen {byte :: Int} deriving (Data, Typeable) 

strlen = cmdArgsMode $ Strlen {byte = def} 

main = do 
     n <- cmdArgsRun strlen 
     let datastring = take byte $ randomRs ('a','Z') (mkStdGen 3) 

回答

4

要選擇byte場從n你需要說byte n。所以

let datastring = take (byte n) $ randomRs ('a','Z') (mkStdGen 3) 
+0

它的作品,但它並不有趣的是,我的部分工作,但後來在主要我使用的標準。標準工作臺然後挑選命令行參數並且感到困惑。我能否以某種方式清空cmdargs,以便標準不會看到它們? –

+0

@JFritsch:我相信你可以;問一個新的問題,並清楚地說明什麼是不工作/你需要什麼,你會得到答案。 –