我正在尝试使用Aho-Corasick算法,以提高F#的技能水平。我发现Trie实现存在问题,它们都是可变的或不能进行尾调用优化。
从我所看到的基本问题来看,不可变数据结构必须从“底部向上”构建,因为您无法更改它们所指向的内容,因此您的选择要么使它们可变,要么在构建过程中找出节点(即在构造函数中递归)。
是否有任何方法可以使用尾调用优化构建不可变的Trie数据结构?(并且不通过复制而失去效率。)
从我所看到的基本问题来看,不可变数据结构必须从“底部向上”构建,因为您无法更改它们所指向的内容,因此您的选择要么使它们可变,要么在构建过程中找出节点(即在构造函数中递归)。
是否有任何方法可以使用尾调用优化构建不可变的Trie数据结构?(并且不通过复制而失去效率。)