SYB(废弃样板)优于GHC Generics的优点

时间:2014-11-12 18:05:51

标签: haskell scrap-your-boilerplate ghc-generics

与GHC Generics相比,是否只有SYB可以完成任务,或者使用它更容易?

1 个答案:

答案 0 :(得分:3)

GHC Generics是一种相当冗长的方式来执行基本上任何查询或遍历。例如,考虑使用StmtExpr类型的语言AST,它们都派生TypeableGenericData

data Stmt = ... lots of constrs ...
data Expr = Const Int
          | ... lots of other constrs ...

如何利用SYB从ExprStmt开始获取所有常量?类似的东西:

getConst (Const i) = [i]
getConst _         = []

getAllConst = everything (++) (mkQ getConst)

将此与泛型的典型用法进行对比,需要两个类,遍历产品表示的总和,并为需要遍历的N个类型实例化N次。 SYB,实际上是大多数通用系统,都在performance