我已经从表中解析了数据(通过tagSoup),现在我已经嵌套了数据列表
datatable with type [[String]]
现在我想将此数据另存为对象列表[Obj]-表格行。每行包含5个字符串。
data Obj = Obj { pdDate :: String,
pdTournamentId :: String,
pdTournamentName :: String,
pdOperation :: String,
pdTown :: String }
deriving (Eq,Show,Read)
我有一个创建对象的功能
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
我在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
答案 0 :(得分:4)
模式python manage.py migrate
将 list 与 head {
"version": "2.0.0",
"tasks": [
{
"label": "Migrate",
"type": "process",
"command": "${config:python.pythonPath}",
"args": [
"${workspaceFolder}/src/manage.py",
"migrate"
],
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": true
},
"problemMatcher": []
}
]
}
和 tail a:b:c:d:e
匹配。
模式a
同样将匹配具有 head b:c:d:e
和 tail b:c:d:e
的列表。
进一步简化,模式b
将匹配具有 head c:d:e
和 tail d:e
的列表。 / p>
因此,d
本身就是一个列表。
如果要在一个列表中精确匹配五个元素,可以将其写为
e
或者,或者
e
请注意,这是不完整的模式匹配。您还应该考虑如果列表小于或大于正好五个元素,该怎么办。