1
的firsttwo廢你的樣板論文描述編寫一般工種的通用功能的一種方式,但對特定類型的特殊情況。例如,fromJSON
從aeson
包,定義了一個通用函數用於從JSON轉換,但對於類型,如列表或Int
提供特殊情況:當前SYB是否允許使用新類型擴展泛型函數?
parseJSON :: (Data a) => Value -> Parser a
parseJSON j = parseJSON_generic j
`ext1R` list
`ext1R` vector
`ext2R'` mapAny
`ext2R'` hashMapAny
-- Use the standard encoding for all base types.
`extR` (value :: F Integer)
`extR` (value :: F Int)
...
然而,如the third SYB paper指出,「所有的類型特定的情況下[當通用函數定義的遞歸結被綁定時,需要]立即提供 。本文隨後提出了一種通過類型機制解除這種限制的方法。所述syb
包的
前兩個SYB論文(有一些修改)部分,但第三個不是。有沒有其他方法可以解除所有類型特定情況需要在Hackage上實現SYB的同時指定?
姆姆。我對新的泛型框架的問題是,如果您的編碼標籤字段很難重建數據。無論如何,謝謝。 – scvalex 2013-02-13 19:48:38