gpt4 book ai didi

haskell - 带有符号字符的函数名称使谷歌搜索变得困难

转载 作者:行者123 更新时间:2023-12-02 01:42:57 26 4
gpt4 key购买 nike

在 Haskell 中,许多函数名只包含符号字符。点赞$$ , >>= , >> , : , -> , => , =~ .

由于我是 Haskell 的新手,我发现很难在 Google 中搜索它们的含义。例如,要了解 ->意味着在 Haskell 中,我需要使用搜索字符串 hyphen followed by greater than据我所知,这不是最好的方法。

有没有一个地方我可以只搜索带有符号的函数?

最佳答案

是的,这是 Google 的一个已知错误。您可能会考虑使用更好的搜索引擎,例如 Hoogle .

通常,您需要查找实际功能的文档。为此,您需要知道它是在哪个模块中定义的。确定这一点的最简单方法是在 GHCi 中加载您的源文件(以便您拥有其所有导入等),然后询问运算符(operator)的 :info。因此:

Prelude> :info (>>=)
class Monad (m :: * -> *) where
(>>=) :: m a -> (a -> m b) -> m b
...
-- Defined in ‘GHC.Base’
infixl 1 >>=
Prelude>

如果类型签名还不够,那么这也告诉你需要谷歌搜索 GHC.Base模块和 Monad类型类。就其本身而言,它是非常可搜索的,但如果该 typeclass 关键字不存在,你会做的是谷歌 GHC.Base , 第一个结果导致 the base package overview page .一旦你在那里 1 然后你寻找一个标记为 [ Index 的小链接。 ] 在模块列表下方( GHC.Base 有一个巨大的模块列表,因此在这种情况下更容易错过)。

单击该链接将带您进入该包中所有公共(public)符号的索引;您可以点击 >字符来查找所有以大于号开头的运算符。然后,您将拥有三个导出该功能的模块链接;单击一个和 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",你可以用谷歌搜索; ->的含义("to") 取决于它是否出现在 lambda 表示法(如 \a b -> b )、case 表达式或函数的类型签名(其中 a -> b -> c 表示“一个接受 a 并返回一个接受 b 并返回一些 c 的函数。 => 的含义来自 Haskell 中的“约束”或“类型类”。

除了 -> ,您有时也可以看到运算符出现在类型签名中。这些应该可以通过上述过程进行搜索。
  • 这是假设包有一个稳定的 API。如果 API 发生变化,您需要查找 ghc -v文件正在使用哪个软件包版本,然后单击该版本。
  • 关于haskell - 带有符号字符的函数名称使谷歌搜索变得困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30106883/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com