Haskell从文件

时间:2016-01-22 21:30:15

标签: list haskell

假设我有一个文件

8 [[1,2,3,4],[1,2]]

包含数字和列表清单。

此代码允许我从中读取所有行或第n个元素。

import System.IO

main = do
      x <- openFile "file.txt" ReadMode
      cont <- hGetContents x
      let fLines = lines cont
      let numb = fLines !! 0 !! 0
      print numb

此处numb'8'

如何在不使用其他库的情况下从numb获取整数8?

是否有可能阅读列表列表并将其用作列表列表?

或者我应该更好地在新行中编写每个列表,并逐行读取它们并添加到空列表中?

也许这是一个愚蠢的问题,但我没有找到任何在互联网上做类似事情的例子。

更新

感谢Fractal的回答,我设法写了这个

rList :: String -> [[Int]]    
rList = read

用于列表清单!

然而,当我无法使用单个Int。

into :: String -> Int
into = read

不知道为什么,但它不适用于numb T_T

更新2

好吧,这有点愚蠢。 numb在这里是Char,所以为了使它工作,写

就足够了
print (into [numb])

谢谢大家的回答。

2 个答案:

答案 0 :(得分:1)

您可以使用ord函数:: Char -> Int

可以在Hoogle搜索引擎上搜索Char -> Int类型签名时找到该功能:http://hoogle.haskell.org/?hoogle=Char+-%3E+Int

文档:https://hackage.haskell.org/package/base/docs/Data-Char.html#v:ord

示例:

import System.IO
import Data.Char (ord)

main = do x <- openFile "file.txt" ReadMode
          cont <- hGetContents x
          let fLines = lines cont
          let numb = fLines !! 0 !! 0
          let numbInt = ord numb - ord '0'
          print numbInt

答案 1 :(得分:1)

您可以使用read来解析Haskell数据结构的String表示。这也适用于您的列表列表。