haskell 中的代码自省是什么?
What is code introspection in haskell?
在yesod book中有一段:
Template Haskell is essentially Haskell which generates a Haskell Abstract Syntax Tree (AST).
There’s actually more power in TH than that, as it can actually introspect code. We don’t use these facilities in Yesod, however.
内省代码是什么意思,您可以使用此功能做什么?
Yesod中的模板Haskell代码仅用于生成代码。从这个意义上说,它是样板文件的严格替代品。我们可以不使用模板 Haskell,而是手动编写从路由文件语法到您应该手写的代码的转换,您可以自己编写等效代码。
通过内省,您实际上是在查看编译器拥有的现有信息并做出决定。例如,您可以搜索 Show
类型类的所有实例并使用该列表创建一个 String
。这种方法在某些情况下很有用,例如自动生成一组测试。书上的评论只是说Yesod从不做这种事。
在yesod book中有一段:
Template Haskell is essentially Haskell which generates a Haskell Abstract Syntax Tree (AST).
There’s actually more power in TH than that, as it can actually introspect code. We don’t use these facilities in Yesod, however.
内省代码是什么意思,您可以使用此功能做什么?
Yesod中的模板Haskell代码仅用于生成代码。从这个意义上说,它是样板文件的严格替代品。我们可以不使用模板 Haskell,而是手动编写从路由文件语法到您应该手写的代码的转换,您可以自己编写等效代码。
通过内省,您实际上是在查看编译器拥有的现有信息并做出决定。例如,您可以搜索 Show
类型类的所有实例并使用该列表创建一个 String
。这种方法在某些情况下很有用,例如自动生成一组测试。书上的评论只是说Yesod从不做这种事。