【发布时间】:2011-09-12 03:56:48
【问题描述】:
我正试图围绕这篇文章展开我的头脑:
http://www.haskell.org/haskellwiki/Scrap_your_boilerplate
虽然我知道 fmap 和 functor 是什么(感谢"Learn you a haskell for great good"),但我还是无法理解这篇文章。有人可以简单地向我解释一下 Haskell 是如何废弃样板的吗?
【问题讨论】:
-
SYB 和其他泛型库在您设计 DSL 时最有用,特别是当您有多个构造函数的递归
data声明时。例如。data Language a = Statement (Language a) | Expr (Language a) | Var a | BinOp String (Language a) (Language a)。如果您不编写这样的代码,请不要担心 SYB。如果您想知道只是为了学习,请尝试先实现一种小语言,然后阅读 SYB 论文。我还发现 Uniplate 比 Syb 更容易理解。 -
@John L,我在想“废弃你的样板”是一个涉及高阶函数和泛型的通用概念,如果有人在 Haskell Wiki 上解释这些示例,我可以理解。但是看起来很难理解。
-
与其说难以理解,不如说它是一种解决特定领域中一组特定问题的技术。如果您没有在问题领域工作,则不清楚 SYB 提供什么或为什么它有用。您可以尝试“Scrap Your Zippers”论文,这是使用泛型的一个特定案例。 cs.indiana.edu/~adamsmd/papers/scrap_your_zippers
标签: haskell