在Haskell中,许多函数名只包含符号字符.像$$,>>=,>>,:,->,=>,=~.
由于我是Haskell的新手,我发现很难在Google中搜索它们的含义.例如,为了理解->Haskell中的含义,我需要使用hyphen followed by greater than不是最佳方法的搜索字符串.
有没有我可以搜索带符号功能的地方?
CR *_*ost 20
是的,这是谷歌的一个已知错误.你可能会考虑像Hoogle这样的更好的搜索引擎.
通常,您需要查找实际功能的文档.要做到这一点,你需要知道它定义了什么模块.确定这个的最简单方法是在GHCi中加载你的源文件(这样你就可以获得所有的导入等),然后请求运营商:info:
Prelude> :info (>>=)
class Monad (m :: * -> *) where
(>>=) :: m a -> (a -> m b) -> m b
...
-- Defined in ‘GHC.Base’
infixl 1 >>=
Prelude>
Run Code Online (Sandbox Code Playgroud)
如果类型签名不够,那么这也告诉您需要谷歌GHC.Base模块和Monad类型类.就其本身而言这是相当googleable,但如果这类型类的关键字都没有了,你会做的是谷歌GHC.Base,第一个结果,导致了base包概述页面.一旦你在那里1然后你在模块列表下面找到一个标记为[ Index ] 的小链接(GHC.Base有一个巨大的模块列表,所以在这种情况下它更容易错过).
单击该链接将转到该包中所有公共符号的索引; 您可以单击该>字符以查找以大于号开头的所有运算符.然后,您将有三个模块链接导出该功能; 单击一个并按Ctrl-F查找以下文档:
(>>=) :: forall a b. m a -> (a -> m b) -> m b | infixl 1 | Source
Sequentially compose two actions, passing any value produced by the first
as an argument to the second.
Run Code Online (Sandbox Code Playgroud)
同样,Hoogle为您完成了所有这些繁琐工作,还有一些其他漂亮的功能,例如按类型签名搜索.
喜欢的事情<-,->以及=>它们是不是功能,你将只需要知道的语言.<-("来自")的含义来自"do-notation",你可以谷歌; ->("to")的含义取决于它是否以lambda-notation(like \a b -> b),case-expression或函数的类型签名出现(其中a -> b -> c"是一个函数,它接受a并返回一个函数,它取一个b和返回一些c".的含义=>来自Haskell中的"约束"或"类型类".
除此之外->,您有时也会看到运算符出现在类型签名中.这些应该可以通过上述程序进行搜索.
ghc -v该文件正在使用的软件包版本,然后单击该版本.| 归档时间: |
|
| 查看次数: |
500 次 |
| 最近记录: |