小编dem*_*ieu的帖子

mapM和forM可以互换吗?

按照我的理解forM是一样的mapM,唯一的争论是相反的.这是否意味着如果我反驳我给他们的论点,我可以forM用a mapM和其他方式替换每一个?

haskell

13
推荐指数
2
解决办法
963
查看次数

在作家monad中传递和倾听的重点是什么?

我在" learnyouahaskell "一书中学习过monads .在阅读了作者monad之后,我决定查看Control.Monad.Writer.Class的文档.

在那里,我看到他们也实现了listenpass功能,但我无法理解它们的用途.有人可以给我一个很好的例子,这样我就能理解如何使用listenpass

monads haskell monad-transformers

6
推荐指数
2
解决办法
1010
查看次数

删除元素的函数(如果存在但添加元素)则不会

我正在寻找一种更简洁的方法来编写一个函数,如果列表不包含它,就会向列表添加元素.或者如果列表确实包含它,则以其他方式删除它,我现在使用一个if子句并且该函数正在运行.

但是我正试图找到一种更好方法来解决这个问题.

这是我的代码:

removeElemOrAdd :: Eq a => a -> [a] -> [a]
removeElemOrAdd elem list = if (List.elem elem list)
                            then (filter(\x -> x /= elem) list)
                            else (elem:list)
Run Code Online (Sandbox Code Playgroud)

haskell list

2
推荐指数
1
解决办法
138
查看次数

在Haskell中更改Map.empty的类型

我正在制作一个扫雷(游戏)而不是使用列表作为表示,我使用不同的集合来保持按类型收集的单元格.

我正在尝试生成一个Map,它使用元组作为键(x坐标,y坐标)作为一对,例如像这样(0,0).地图的价值将是包含炸弹的邻居数量.例如(0,0)1意味着单元格(0,0)与炸弹有1个邻居.

虽然我在Map.empty上遇到错误,但我能够想出一个肮脏的方法来制作它.

错误

setTest.hs:57:70:
    Couldn't match expected type `Map.Map (t0, t0) Int
                                  -> Map.Map (t0, t0) Int'
                with actual type `Map.Map k0 a1'
    In the second argument of `createBoard', namely `Map.empty'
    In the expression: createBoard listOfBombs Map.empty fieldList
    In the expression:
      let
        fieldList = [... | x <- ..., y <- ...]
        nrBombs = round $ fromIntegral (xCoord * yCoord) * 0.20
        listOfBombs
          = Set.fromAscList
              (take nrBombs
               $ nub $ randomRs ((0, 0), (xCoord, yCoord)) (mkStdGen seed))
      in createBoard …
Run Code Online (Sandbox Code Playgroud)

haskell

0
推荐指数
1
解决办法
312
查看次数

标签 统计

haskell ×4

list ×1

monad-transformers ×1

monads ×1