小编sab*_*uma的帖子

Haskell映射返回monad

Data.Map和Data.IntMap中的查找函数当前返回包含在带有类型签名的Maybe中的值

lookup  :: Ord  k => k -> Map  k a -> Maybe  a
Run Code Online (Sandbox Code Playgroud)

它曾经有更普遍的类型

lookup  :: (Monad  m, Ord  k) => k -> Map  k a -> m a
Run Code Online (Sandbox Code Playgroud)

我意识到前者可能会减少额外类型规范的需要,但后者会使它更加通用,并允许在列表推导中使用查找.有没有办法模仿新版本的这种行为,还是我必须使用旧版本的库?

monads haskell map maybe

10
推荐指数
3
解决办法
1278
查看次数

Haskell:把一棵树变成一张地图

基本上我想将BST树变成一个映射,其中节点是键,节点的出现次数是值.所以,如果我输入这个:

toMap(叶子13)

我会的

> [(13,1)]
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

data Tree a = Empty | Node a (Tree a) (Tree a) deriving (Show)
leaf x = Node x Empty Empty

toMap' :: Int -> Tree a -> ([(a, Int)], Int)
toMap' a Empty = ([], a)
toMap' a (Node x xl xr) = ((x, a): xl' ++ xr', k)
                      where (xl', i) = toMap' (a+1) xl
                            (xr', k) = toMap' (i) xr

toMap :: Tree a -> [(a, Int)]
toMap = fst. toMap' …
Run Code Online (Sandbox Code Playgroud)

binary-tree haskell map

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

标签 统计

haskell ×2

map ×2

binary-tree ×1

maybe ×1

monads ×1