Haskell访问自定义数据类型中的字段

时间:2014-11-20 13:21:12

标签: haskell tree custom-data-type

对于赋值,我必须为自定义数据类型树(定义如下)实现不同的函数

我想加入标签'使用故障函数getNodeValue生成树的根节点(节点值)。我非常感谢有关如何做到这一点的帮助!

data Tree = Node (Label -> Label) Label [Tree]
type Label = Int

testTree = Node (+1) 0 [Node (+1) 1 [], Node (+1) 2 [], Node (+1) 3 []]

getNodeValue :: Tree -> Label
getNodeValue t = {... how does I custom types? ...}

2 个答案:

答案 0 :(得分:2)

我认为你想在这里使用模式匹配来“查看”Tree数据类型。要获取提供的树的根节点的值,您必须执行以下操作:

getNodeValue :: Tree -> Label
getNodeValue (Node _ l _) = l

答案 1 :(得分:1)

如果允许更改类型定义,也可以使用记录语法自动生成访问器:

data Tree = Node
    { getUpdater :: (Label -> Label)
    , getNodeValue :: Label
    , getSubnodes :: [Tree]
    }