假设我有一个文件
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])
谢谢大家的回答。
答案 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
表示。这也适用于您的列表列表。