type trie_p
type(trie), pointer :: p => NULL()
end type trie_p
type trie
class(*), allocatable :: value
type(trie_p), dimension(:), allocatable :: nodes
end type trie
data Trie v
= Branch Char (Map Char (Trie v))
| Leaf Char v
type trie_p
type(trie), pointer :: p => NULL()
end type trie_p
type trie
class(*), allocatable :: value
type(trie_p), dimension(:), allocatable :: nodes
end type trie