0
我的功能正常。但是我想用文件的文本來使用這個函數。文本文件在整數列表之前有一個單詞。我怎樣才能做到這一點?只能使用帶文本文件的整數
這是函數:
broke :: Integer -> Integer
broke n = pollard 1 2 n 2 2
文件的內容是:
Word (11,12)
我想要的功能broke
適用於第一個數字。
我的功能正常。但是我想用文件的文本來使用這個函數。文本文件在整數列表之前有一個單詞。我怎樣才能做到這一點?只能使用帶文本文件的整數
這是函數:
broke :: Integer -> Integer
broke n = pollard 1 2 n 2 2
文件的內容是:
Word (11,12)
我想要的功能broke
適用於第一個數字。
嗯,這可能是種欺騙,但該文件的內容是一個有效的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。
我爲此寫了我的解析器,並且工作了!謝謝,我明白了這個過程,哈斯克爾似乎很容易這種操作hahahahahaha –
我想了解爲什麼這個問題被標記爲「monads」 - 您具體詢問monads的具體內容是什麼? –