【发布时间】:2018-03-30 17:08:28
【问题描述】:
我是 Haskell 初学者,对于新手问题,我深表歉意。我对monads的理解很肤浅。
我正在使用 Persistent 模块中的函数 insert。 (我一直关注the tutorial here。)它在数据库中插入一些东西,并返回ID。我可以这样使用它:
resultId <- insert myItem
这适用于单个项目。我可以像这样打印出 resultId:
liftIO $ print resultId
但是如果我的myItem 实际上是一个任意长度的列表呢?我想在这个列表上映射insert,我似乎可以这样做:
resultIds <- mapM_ insert myItemList
但是如果我尝试打印出这些值:
liftIO $ print resultIds
我刚收到()。我究竟做错了什么?
【问题讨论】:
-
您应该使用
mapM而不是mapM_下划线表示您不关心结果。 -
酷,谢谢,成功了。
-
详细说明,
mapM_丢弃结果,将其替换为()。它在某些情况下很有用,但当然不是在这里。
标签: haskell