我的功能正常。但我想将此函数与文件的文本一起使用。文本文件在整数列表之前有一个单词。我怎么能这样做?
这是功能:
broke :: Integer -> Integer
broke n = pollard 1 2 n 2 2
该文件的内容是:
Word (11,12)
我想将函数broke
应用于第一个数字。
答案 0 :(得分: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。