2017-05-24 71 views
0

我的功能正常。但是我想用文件的文本來使用這個函數。文本文件在整數列表之前有一個單詞。我怎樣才能做到這一點?只能使用帶文本文件的整數

這是函數:

broke :: Integer -> Integer 
broke n = pollard 1 2 n 2 2 

文件的內容是:

Word (11,12) 

我想要的功能broke適用於第一個數字。

+0

我想了解爲什麼這個問題被標記爲「monads」 - 您具體詢問monads的具體內容是什麼? –

回答

1

嗯,這可能是種欺騙,但該文件的內容是一個有效的Haskell表達式,你可以使用Read做到這一點:

import System.IO (readFile) 

data Word = Word (Integer,Integer) 
    deriving (Read) 

main = do 
    contents <- readFile "path/to/file" -- or wherever your file is 
    let Word (x,y) = read contents 
    print $ broke x 

這部作品的原因是deriving (Read)自動寫入爲你解析器,所以你可以免費獲得功能read :: String -> Word。所以這種技術只適用於內容看起來像Haskell的文件 - 否則你需要編寫你自己的parser

+0

我爲此寫了我的解析器,並且工作了!謝謝,我明白了這個過程,哈斯克爾似乎很容易這種操作hahahahahaha –