我正在使用模板 Haskell 來生成有關型別的資料。出于多種原因,我需要使用“規范化”的型別。所以它不應該是型別別名/同義詞。我真的不想在構造中禁止使用型別別名,因為使用的某些型別可能會變得很大。
所以現在我遇到的問題是,當用戶指定型別時,它與我期望的型別不匹配。例如,如果我有這個定義:
data MyData a = MyData Int
type Foo = MyData String Int Bool
serializeMyData :: TH.Type -> TH.Q [TH.Dec]
serializeMyData ty = ..
type Foo = MyData Int
后來我這樣稱呼serializeMyData它:
$(serializeMyData =<< [t| Foo |] )
然后在serializeMyData它會找到一個ConT Foo. 這是正確的,因為用戶已經指定了型別別名。但是對我沒用。
所以我的問題是如何解決型別別名?
任何幫助表示贊賞!
uj5u.com熱心網友回復:
該函式resolveTypeSynonyms :: TH.Type -> Q TH.Type可以在庫th-abstraction中找到。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477444.html
標籤:哈斯克尔 模板-haskell
上一篇:Haskell:非型別變數引數
下一篇:了解foldr和foldl函式
