次のような関数を書く必要があります
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
ファイルの先頭にあります。私は何が間違っているのですか?