仅使用带文本的文件的整数

时间:2017-05-24 19:25:05

标签: haskell

我的功能正常。但我想将此函数与文件的文本一起使用。文本文件在整数列表之前有一个单词。我怎么能这样做?

这是功能:

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

该文件的内容是:

Word (11,12)

我想将函数broke应用于第一个数字。

1 个答案:

答案 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