Я пишу простой класс HashString, который представляет собой всего лишь строку и ее хэш:
data HashString = HashString Int -- ^ hash
T.Text -- ^ string!
Теперь я пытаюсь сгенерировать их во время компиляции, используя что-то вроде:
$(hString "hello, world") :: HashString
Я хочу, чтобы хэш и упаковка текста происходили во время компиляции. Как мне это сделать?
Вот то, что я пробовал до сих пор, но я не уверен, что это правильно, и не уверен, что он делает все во время компиляции:
hString :: String -> Q Exp
hString s = [| HashString (hash $ T.pack s) (T.pack s) |]