对于我的任务,我必须使用以下类型执行两个功能:
wt: trie -> (char list list -> ’a)-> ’a
aw: trie list -> (char list list -> ’a)-> ’a
但我所拥有的是这个并且想知道它是否是同一件事:
wt: 'a trie -> ('a list list -> ’a list list)-> ’a list list
aw: 'a trie list -> ('a list list -> ’a list list)-> ’a list list
这是我的功能:
datatype ’a trie = Node of ’a * (’a trie) list | Empty
fun words_in_trie Empty cont = cont [[]]
| words_in_trie (Node (c, lis)) cont = all_words lis (fn j => map (fn y => [c]@y) j)