【发布时间】:2019-05-09 20:20:46
【问题描述】:
我已经从表中解析了数据(通过 tagSoup),现在我有嵌套的数据列表
datatable with type [[String]]
现在我想将此数据保存为对象列表 [Obj] - 表格行。每行由 5 个字符串组成。
data Obj = Obj { pdDate :: String,
pdTournamentId :: String,
pdTournamentName :: String,
pdOperation :: String,
pdTown :: String }
deriving (Eq,Show,Read)
我有一个创建 Obj 的函数
buildObj [a:b:c:d:e] = do
let lst = last e
let line = Obj {pdDate = a,
pdTournamentId = b,
pdTournamentName = c,
pdOperation = d,
pdTown = lst}
return line
要通过主块中的嵌套列表,我调用函数map
map buildObj datatable
- 以及如何将所有数据 Obj 保存到列表 [Obj] 中?
我是 Haskell 的新手,所以看看是否有人可以给我指点。
谢谢!
更新:@Mark Seemann 的回答有助于修复错误类型 [[[String]]]
当前错误
* Couldn't match expected type `Obj' with actual type `m0 Obj'
* In a stmt of a 'do' block: return line
和
* Couldn't match type `[]' with `IO'
Expected type: IO Obj
Actual type: [Obj]
* In a stmt of a 'do' block: map buildObj datatable
【问题讨论】:
-
您希望
[a:b:c:d:e]匹配什么? -
@Rein Henrichs 我希望会有 5 个字符串,我只是不知道另一种方法来做到这一点
-
所以如果数据表类型为 [[String]],我希望 [a:b:c:d:e] - [String] 我的初始表的一行
-
显示产生错误的代码。
-
@chepner 我更新了问题描述。如果有任何提示,我将不胜感激!
标签: haskell