2016-11-15 66 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) = []