繁体   English   中英

Haskell从文件中读取Integer和列表列表

[英]Haskell read Integer and list of lists from file

可以说我有一个档案

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])

谢谢大家的回答。

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

可以在Hoogle搜索引擎上搜索Char- Char -> Int类型签名来找到该函数: http ://hoogle.haskell.org/?hoogle= Char -> Int 3E+ Char -> 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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM