我试图在Haskell中创建一个函数,它将Trie数据类型作为参数,并返回Trie中所有字符串的列表 . Trie定义如下(并且定义不能更改):所有单词以句点开头并以$结尾 . 字符必须按字母顺序排列 . 数据类型如下

data Trie = MakeTrie Char [Trie] 
 deriving Eq

其中每个Trie由一个起始字符和其他Tries的子列表(如子树)组成 . 我假设我将不得不使用map函数以某种方式取出chars并将它们放在一个新列表中,但我甚至无法弄清楚如何遍历Trie . 任何提示都会很精彩 .

编辑:继承我解决问题的方法,我们必须查看字符串是否在Trie中 . 我试过以类似的方式遍历,并试图利用头尾功能,但没有运气 .

searchWord string (MakeTrie char sub)
|char == '$' = True
|char == '.' = or (map (searchWord string) sub) --starts the traversal
|char == head(string) = or (map (searchWord bottom) sub)
|otherwise = False
where
bottom = tail(string)