Sml 如何获取数据类型变量内部的值?

Sml 如何获取数据类型变量内部的值?,sml,ml,Sml,Ml,假设我有以下树数据类型: 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-tree类型的变量。我想知道的是,在给定变量x的情况下,如何对树的不同部分进行分析和计算 例如,在此函数中: fun add(tree) = .... add(x); 假设函数将树的节点中的所有值相加,

假设我有以下树数据类型:

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-tree类型的变量。我想知道的是,在给定变量x的情况下,如何对树的不同部分进行分析和计算

例如,在此函数中:

fun add(tree) = ....
add(x);
假设函数将树的节点中的所有值相加,我如何准确地获取这些值?我知道对于元组,您可以执行以下操作:

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

获取第i个索引处的元素。这种类型的功能如何处理递归数据类型

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

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