我需要编写一个具有以下类型的函数
replaceSubtrie :: SSTrie -> Data.Word.Word8 -> SSTrie -> SSTrie
replaceSubtrie trie base subtrie = ???
根据 的值base
,子特里将以不同的方式插入特里。SSTrie 是我自己的数据类型,我知道如何使用它,但我不知道如何处理 Word8 值。
base
是取自 ByteString 的单个“字符”(对于“字符”的某些值)。具体来说,它是调用index
ByteString 的结果——这是我将其声明为 Word8 的唯一原因。
我无法进行模式匹配,因为没有可用的 Word8 构造函数。而且我不能让守卫工作,因为我不知道如何构造一个 Word8 常量来比较它。
[编辑] 杰罗姆的建议奏效了。但更一般地说,是否有任何好的文章展示如何使用字节字符串(和其他更底层的数据)?就像,我怎么知道关于 Word8 的事实?
[编辑-唐斯图尔特的问题]
现在我已经可以使用这样的代码了
replaceSubtrie trie 0x41 subtrie = trie{ a=subtrie }
当我将其更改为:
replaceSubtrie trie 'A' subtrie = trie{ a=subtrie }
我收到一个错误:
Trie.hs:40:21:
Couldn't match expected type `Word8' with actual type `Char'
In the pattern: 'A'
In an equation for `replaceSubtrie':
replaceSubtrie trie 'A' subtrie = trie {a = subtrie}
import qualified Data.ByteString.Char8 as C
我的文件顶部确实有。我究竟做错了什么?