gpt4 book ai didi

haskell - 如何在 hackage 包中搜索功能?

转载 作者:行者123 更新时间:2023-12-03 20:00:50 29 4
gpt4 key购买 nike

也许我遗漏了一些东西,但是有没有办法在一些关于hackage的包中搜索?

假设我知道 Snap 框架有一个名为 render 的函数。 .我如何从它的 hackage 页面上找到它:
http://hackage.haskell.org/package/snap-0.9.0.1

最佳答案

您可以使用Hoogle使用 +package搜索运算符。

默认情况下,Hoogle 将在一组标准的包中按名称或类型进行搜索:

  • Searching for traverse 会发现:
  • traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
    base Data.Traversable
  • traverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()
    base Data.Foldable
    将结构的每个元素映射到一个 Action ,从左到右评估这些 Action ,并忽略结果。
  • ……等等
  • Searching for (a -> b -> c) -> f a -> f b -> f c 会发现:
  • liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
    base Control.Monad
    将函数提升为 monad,从左到右扫描 monad 参数。
  • liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c
    base Control.Applicative
    将二元函数提升为 Action 。
  • ……等等

  • 现在,这很好,很漂亮,但是其他包呢?如果您 search for render , 你会发现 Render :: RenderMode 来自 OpenGL , render :: Doc -> String 来自 pretty ,以及其他一些东西;默认情况下不搜索 snap 包。

    但是,如果您添加 +packagename+Module.Name对于您的搜索,Hoogle 只会在指定的包内搜索(并且 -packagename-Module.Name 从搜索中删除包/模块)。因此, searching for +snap render 只找到以下三件事:
  • render :: HasHeist b => ByteString -> Handler b v ()
    snap Snap.Snaplet.Heist
    将模板呈现为 text/html。如果未找到给定的模板,则返回空。
  • renderAs :: HasHeist b => ByteString -> ByteString -> Handler b v ()
    snap Snap.Snaplet.Heist
    将模板呈现为给定的内容类型。如果未找到给定的模板,则返回空。
  • renderWithSplices :: HasHeist b => ByteString -> [(Text, SnapletSplice b v)] -> Handler b v ()
    snap Snap.Snaplet.Heist
    使用给定的拼接集渲染模板。这是 heistLocal、bindSplices 和 render 的常见组合的语法糖。

  • 有关使用 Hoogle 的更多信息,您可以 check its manual on the Haskell wiki .

    关于haskell - 如何在 hackage 包中搜索功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11199853/

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