2016-11-15 51 views
1

比方说,我有以下的树数据类型:如何获取数据类型变量的值?

datatype 'a tree = Empty | Node of 'a * 'a tree * 'a tree; 
val x = Node(10, Node(20, Empty, Empty), Node(30, Empty, Empty)); 

这里,x是int类型树的变量。我想知道的是如何解析和评估树的不同部分只有变量x?

例如,在此功能:

fun add(tree) = .... 
add(x); 

说功能将所有的树的节点的值,我怎么会正好抓住这些价值?我知道你可以做的元组:

#i(x, y, z, ......) 

抓住第i个指数的元素。这种类型的功能如何与递归数据类型一起工作?

回答

1

要从递归数据类型获取值,只需为其写入递归函数即可。

fun getValues(Node(v,l,r) : 'a tree) : 'a list = getValues(l) @ [v] @ getValues(r) 
    | getValues(Empty) = []