小编kle*_*bur的帖子

对于具有嵌套 Maybe 值的 Tree 数据类型, Traversable 实例应该是什么样子?

三天后我有一个 Haskell 考试,所以我想我应该练习一下并提取过去的考试,其中一个具有以下 Tree 数据类型:

data Tree a = Leaf1 a | Leaf2 a a | Node (Tree a) (Maybe (Tree a)) deriving (Eq, Ord, Show)
Run Code Online (Sandbox Code Playgroud)

起初看起来并不那么具有挑战性,但后来我意识到我必须为这棵树编写一个 Traversable 实例。处理树叶很容易:

instance Traversable Tree where
  traverse f (Leaf1 a)   = Leaf1 <$> f a
  traverse f (Leaf2 a b) = Leaf2 <$> f a <*> f b
Run Code Online (Sandbox Code Playgroud)

但是,我开始遇到 Node.js 的问题。

  traverse f (Node t Nothing)  = Node <$> traverse f t <*> Nothing
  traverse f (Node l (Just r)) = Node <$> …
Run Code Online (Sandbox Code Playgroud)

tree haskell maybe traversable

11
推荐指数
2
解决办法
554
查看次数

标签 统计

haskell ×1

maybe ×1

traversable ×1

tree ×1