带有符号字符的函数名称使谷歌搜索变得困难
Function names with symbol characters makes Googling difficult
在Haskell中,很多函数名只包含符号字符。像 $$
、>>=
、>>
、:
、->
、=>
、=~
。
由于我是 Haskell 的新手,我发现很难在 Google 中搜索它们的含义。例如,要了解 ->
在 Haskell 中的含义,我需要使用搜索字符串 hyphen followed by greater than
,这不是我的最佳方法。
有什么地方可以搜索只有符号的函数吗?
是的,这是 Google 的一个已知错误。您可能会考虑使用更好的搜索引擎,例如 Hoogle.
一般情况下,您需要查找文档以了解实际功能。为此,您需要知道它在什么 module 中定义。确定这一点的最简单方法是在 GHCi 中加载您的源文件(以便您拥有所有导入等)。 ) 然后请求操作员的 :info
这样:
Prelude> :info (>>=)
class Monad (m :: * -> *) where
(>>=) :: m a -> (a -> m b) -> m b
...
-- Defined in ‘GHC.Base’
infixl 1 >>=
Prelude>
如果类型签名不够,那么这也告诉您需要 google GHC.Base
模块和 Monad
类型类。就其本身而言,这是相当 google 可行的,但是如果该类型类关键字不存在,您将要做的是 google GHC.Base
,第一个导致下面 the base
package overview page. Once you are there1 then you look for a little link labeled [Index] 的结果模块列表(GHC.Base
有一个巨大的模块列表,所以在这种情况下更容易错过)。
单击 link 会将您带到该包中 所有 public 符号的索引 ;您可以单击 >
字符来查找所有以大于号开头的运算符。然后,您将拥有三个 link 导出该功能的模块;单击其中一个并按 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.
同样,Hoogle 为您完成了所有这些繁琐的工作,并且还有一些其他漂亮的功能,例如按类型签名搜索。
对于 <-
、->
和 =>
之类的 而非 函数,您只需要了解该语言即可。 <-
("from")的意思来自"do-notation",你可以Google; ->
("to") 的含义根据它是否出现在 lambda 表示法(如 \a b -> b
)、大小写表达式或函数的类型签名(其中 a -> b -> c
的意思是"a function which takes an a
and returns a function which takes a b
and returns some c
"。=>
的意思来自"constraints"或"type classes"中的Haskell。
除了->
,您有时也可以在类型签名中看到运算符。这些应该可以通过上述过程搜索到。
- 这是假设软件包稳定 API。如果 API 已更改,您将需要使用
ghc -v
查找文件使用的软件包版本,然后单击该版本。
在Haskell中,很多函数名只包含符号字符。像 $$
、>>=
、>>
、:
、->
、=>
、=~
。
由于我是 Haskell 的新手,我发现很难在 Google 中搜索它们的含义。例如,要了解 ->
在 Haskell 中的含义,我需要使用搜索字符串 hyphen followed by greater than
,这不是我的最佳方法。
有什么地方可以搜索只有符号的函数吗?
是的,这是 Google 的一个已知错误。您可能会考虑使用更好的搜索引擎,例如 Hoogle.
一般情况下,您需要查找文档以了解实际功能。为此,您需要知道它在什么 module 中定义。确定这一点的最简单方法是在 GHCi 中加载您的源文件(以便您拥有所有导入等)。 ) 然后请求操作员的 :info
这样:
Prelude> :info (>>=)
class Monad (m :: * -> *) where
(>>=) :: m a -> (a -> m b) -> m b
...
-- Defined in ‘GHC.Base’
infixl 1 >>=
Prelude>
如果类型签名不够,那么这也告诉您需要 google GHC.Base
模块和 Monad
类型类。就其本身而言,这是相当 google 可行的,但是如果该类型类关键字不存在,您将要做的是 google GHC.Base
,第一个导致下面 the base
package overview page. Once you are there1 then you look for a little link labeled [Index] 的结果模块列表(GHC.Base
有一个巨大的模块列表,所以在这种情况下更容易错过)。
单击 link 会将您带到该包中 所有 public 符号的索引 ;您可以单击 >
字符来查找所有以大于号开头的运算符。然后,您将拥有三个 link 导出该功能的模块;单击其中一个并按 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.
同样,Hoogle 为您完成了所有这些繁琐的工作,并且还有一些其他漂亮的功能,例如按类型签名搜索。
对于 <-
、->
和 =>
之类的 而非 函数,您只需要了解该语言即可。 <-
("from")的意思来自"do-notation",你可以Google; ->
("to") 的含义根据它是否出现在 lambda 表示法(如 \a b -> b
)、大小写表达式或函数的类型签名(其中 a -> b -> c
的意思是"a function which takes an a
and returns a function which takes a b
and returns some c
"。=>
的意思来自"constraints"或"type classes"中的Haskell。
除了->
,您有时也可以在类型签名中看到运算符。这些应该可以通过上述过程搜索到。
- 这是假设软件包稳定 API。如果 API 已更改,您将需要使用
ghc -v
查找文件使用的软件包版本,然后单击该版本。