# SML/NJ Library Manual

## The `MatchTree` structure

#### Synopsis

> `signature `MATCH_TREE`
> structure `MatchTree` : MATCH_TREE
> `

This structure implements the type used to report matching information and associated operations.

#### Interface

> `datatype 'a match_tree
> = Match of ('a * 'a match_tree list)
> val root : 'a match_tree -> 'a
> val nth : ('a match_tree * int) -> 'a
> val map : ('a -> 'b) -> 'a match_tree -> 'b match_tree
> val app : ('a -> unit) -> 'a match_tree -> unit
> val find : ('a -> bool) -> 'a match_tree -> 'a option
> val num : 'a match_tree -> int
> `

#### Description

`datatype 'a match_tree`
`root mt`
  returns the root (outermost) match in the tree mt.
`nth (mt, n)`
  returns the nth match in the tree mt. Matches are labeled in preorder, starting at 0. The nth match in a tree correspond to the match of the nth subexpression of a regular expression, when counted from left to right (and letting the full expression be indexed at 0).
`map f mt`
  maps a function f over the tree mt in preorder.
`app f mt`
  applies a given function f over every element of the tree mt in preorder.
`find f mt`
  finds the first match in the tree mt that satisfies the predicate f (or `NONE`).
`num mt`
  returns the number of matches included in the tree mt.

[ Top | Parent | Contents | Index | Root ]

Last Modified June 3, 1998
Comments to John Reppy
Copyright © 1998 Bell Labs, Lucent Technologies