【发布时间】:2013-08-20 21:48:20
【问题描述】:
我对 Haskell 比较陌生,并试图通过使用 Yesod 框架构建网站来获得一些经验。我现在面临的最大困难是我经常不确定一个函数需要什么类型,或者另一个函数返回什么类型。我也很难解释我犯错时产生的类型错误。
特别是,我希望能够做以下事情,但我目前不知道做这些事情的好方法。
- 给定一个表达式,找出表达式的类型。通常我会使用 GHCi 来做这样的事情,但据我所知,如果我想这样做,我需要知道表达式的每个部分来自哪个包,我不知道该怎么做。我还希望能够检查从模板 Haskell 生成的函数的类型,例如 HomeR。有没有办法使用 GHCi 检查出现在 Yesod 项目的 .hs 文件中的任意表达式的类型或求值?
- 同上,给定一个出现在 Yesod 项目的某个 .hs 文件中的类型或类,得到它的定义吗?
- 给定一个 Yesod 函数或类型,快速找到它的文档。我目前所做的是在谷歌上搜索给定的函数,但这有点烦人,因为第一个结果并不总是文档,有时它是旧版本的。有没有快速查找 Yesod 文档的有效方法?
【问题讨论】:
-
在 GHCi 中你不需要知道一个项目来自哪个 package,你只需要知道要导入哪个 module . (当然,这并不一定容易得多......)
-
关于您的第一个问题:如果您使用 Vim,请查看 vim-hdevtools。它允许您通过按下按钮查看任何子表达式的类型。非常有价值。