【发布时间】:2018-01-03 20:33:16
【问题描述】:
我是 haskell 的新手,需要使用特定的数据类型来解决我正在处理的问题。
data Tree a = Leaf a | Node [Tree a]
deriving (Show, Eq)
所以当我创建一个实例时,例如 Node[Leaf 1, Leaf2, Leaf 3] 我如何访问这些?它不会让我使用 head 或 tail 或 indexing with !! .
【问题讨论】:
-
关于术语的注释。您定义的是一个“类型构造函数”(
Tree),它可以提供一个类型参数来生成一个类型(例如Tree Int)和几个“数据构造函数”(Leaf和Node)可以提供值参数来产生一个值(不是“实例”)。例如,请参阅this prior question and answer。 -
这很好,因为应该尽可能避免使用像
head,tail,!!这样的部分函数,而是使用模式匹配。
标签: haskell