【发布时间】:2011-08-06 07:27:29
【问题描述】:
我想创建一个entries :: Map(String -> Entry),这样我就可以轻松地按名称访问每个条目。为此,我有代码
Just xml ← xmlNew "blah.glade"
...
entries ← fromList $ [(name,entry) | name <- entryList
, entry <- xmlGetWidget xml castToEntry name]
(其中entryList 是条目名称列表,例如["name1","name2",...])。
但是,列表推导出现以下错误:
Couldn't match expected type `[t]' against inferred type `IO Entry'
In the expression: xmlGetWidget xml castToEntry name
In a stmt of a list comprehension:
entry <- xmlGetWidget xml castToEntry name
In the second argument of `($)', namely
`[(name, entry) |
name <- entryList, entry <- xmlGetWidget xml castToEntry name]'
我不明白为什么它需要一个列表。有人可以帮忙吗?
【问题讨论】:
标签: list haskell list-comprehension glade