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

Haskell访问自定义数据类型中的字段,haskell,tree,custom-data-type,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 -&

对于分配,我必须为自定义数据类型树实现不同的函数,如下所述

我想使用错误的函数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? ...}

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

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

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

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

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

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

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

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

谢谢你,这正是我想要的!我想应该是这样的,但我不知道我也必须传递构造函数调用。为了正确起见,树实际上应该是节点。是的,就在之前更改了它。谢谢你,谢谢你,这正是我想要的!我想应该是这样的,但我不知道我也必须传递构造函数调用。为了正确起见,树实际上应该是节点。是的,就在之前更改了它。谢谢你。