我试图在Haskell开发环境中使用hoogle,就像O'Charles的wiki所描述的那样:
我已经修改shell.nix如下使用hoogleLocal,但它似乎没有为我安装hoogle二进制文件.
let
pkgs = import <nixpkgs> {};
# I'm attempting to use hoogle here, but it is not working.
haskellPackages =
let callPackage = pkgs.lib.callPackageWith haskellPackages;
in pkgs.recurseIntoAttrs (pkgs.haskellPackages.override {
extension = self: super: {
thiscurrentpackage = self.callPackage ./. {};
hoogleLocal = pkgs.haskellPackages.hoogleLocal.override {
packages = self.thiscurrentpackage;
};
};
});
in pkgs.myEnvFun {
name = haskellPackages.thiscurrentpackage.name;
buildInputs = [
(haskellPackages.ghcWithPackages (hs: ([
hs.cabalInstall
hs.ghcMod
hs.yesodBin
# This doesn't appear to install the hoogle …Run Code Online (Sandbox Code Playgroud) 在ghci中使用hoogle时如何使用hoogle命令行标志?
这显然不起作用:
ghci> :hoogle --count=5 Char -> Int
Could not read as type Int, "5 Char -> Int"
Run Code Online (Sandbox Code Playgroud) 有没有办法在Hoogle(或Stackage)上搜索类型类的实例?
例如,我想知道哪个包定义了Liftfor 的实例Text.
我能够在包装中找到它th-lift-instances,但手动搜索需要大约10分钟.好像应该有一些允许搜索实例的Hoogle功能.
我试图了解Hoogle和Hayoo为什么不匹配的根本原因
(b -> c) -> (b' -> c') -> (b, b') -> (c, c')
Run Code Online (Sandbox Code Playgroud)
至
a b c -> a b' c' -> a (b, b') (c, c')
Run Code Online (Sandbox Code Playgroud)
这恰好是以下类型Control.Arrow.***:
(***) :: a b c -> a b' c' -> a (b, b') (c, c')
Run Code Online (Sandbox Code Playgroud)
- 这可能只是尚未实现的东西,还是有一些基本的东西阻止了这种基于类型的搜索的实施?
我试图找到toStrict类型的函数Data.Text.Lazy.Text -> Data.Text.Text,但我不知道a)它被称为什么,以及b)究竟什么是Lazy模块名称.
搜索Hayoo Text -> Text会带来很多结果.有没有办法搜索签名*Lazy*Text -> Text?
搜索Data.Text.Lazy.Text -> Text不会产生任何结果.
我应该如何(lazy) Text -> (strict) Text使用hayoo,hoogle或......来寻找类型的功能?
hoogle(hoogle-4.2.36)安装过程看起来很成功,除了在命令行输入"hoogle"时,它会抱怨"hoogle:command not found".
在两台机器上都运行了这两台机器(都运行MAC OS X Yosemite),它们完全失败了.有什么建议可以解决吗?
谢谢!
在Hoogle网站上搜索功能时,可以看到与其相关的文档,例如:
mod :: a -> a -> a infixl 7
integer modulus, satisfying
(x `div` y)*y + (x `mod` y) == x
Run Code Online (Sandbox Code Playgroud)
Hoogle也作为命令行可执行文件存在.据我所知,它只显示功能的签名:
~ ??? hoogle --info Prelude.mod
Prelude mod :: Integral a => a -> a -> a
From package base
mod :: Integral a => a -> a -> a
Run Code Online (Sandbox Code Playgroud)
有没有办法通过命令行获取相关文档,如在线版本?
我正在寻找一个像foldlWithKey一样的函数,但是封装在monad中.
我希望它有类型
Monad m => (a -> k -> b -> m a) -> a -> Map k b -> m a
Run Code Online (Sandbox Code Playgroud)
但是Hoogle没有给我任何类型的东西.
上下文:在stack我停止使用hoogle本地之前因为我的索引会以某种方式与已安装的软件包失去同步 如果我没记错的话,我在ghci命令行和cabal沙箱中遇到了不同结果的问题.
我可以利用stack环境管理本地hoogle数据库吗?
假设我想要一个type函数[[a]] -> [[b]] -> [[(a, b)]]。我敢肯定我能弄清楚,但是有可能,它不会像一样干净 zipWith zip。
在Hoogle中输入这种类型签名可以为我提供一些功能,但这些功能来自leancheckand extrapolate包,我不想在没有充分理由的情况下将其拖到我的项目中。
鉴于您可以通过方程式推理来计算函数组成,我想知道是否与此过程相反:是否有一种方法可以“分解”复杂的类型签名并将其简化为最简单的函数组成?