在Haskell中,有两种主要方法可以查找函数信息.
像Hoogle和Stackage这样的网站.这些网站提供两种主要的搜索类型:
搜索函数的名称.例如,这里是在Hoogle上搜索一个名为的函数catMaybes.
此搜索返回catMaybes函数的类型,以及它定义的包和模块.
此类搜索的主要用例是当您看到某个地方使用的函数,并且您想知道它的类型以及它所定义的包时.
搜索函数的类型.例如,这里是在Hoogle上搜索类型的函数[Maybe a] -> [a].
此搜索返回多个具有相似类型的函数,第一个函数是catMaybes.它还返回包和模块catMaybes的定义.
在编写代码时会出现此类搜索的主要用例.你知道你需要的功能的类型,你想知道它是否已经在某处定义.例如,您有一个Maybes 列表,并且您希望返回一个列表,其中Nothing删除了所有s.你知道函数会有类型[Maybe a] -> [a].
直接来自ghci.在ghci,使用该:info命令可以很容易地获得有关函数的信息,只要该函数已经在您的环境中.
例如,这是一个ghci会话,显示如何获取有关该catMaybes功能的信息.请注意您必须首先导入Data.Maybes模块:
> import Data.Maybe
> :info catMaybes
catMaybes :: [Maybe a] -> [a] -- Defined in ‘Data.Maybe’
>
Run Code Online (Sandbox Code Playgroud)
:info显示它的类型catMaybes和定义的位置.
在OCaml中,可以使用哪些站点/工具按名称或类型搜索功能?
例如,我正在阅读Real World OCaml.我使用该函数遇到了一些代码|>.我想知道是否有一个<|以相反方式编写的功能.但是,我不知道有任何搜索函数的方法<|.另外,我不知道如何确定|>定义的位置.
根据上面的链接代码,我猜想|>要么必须在Pervasives中,要么在Jane Street的Core中,但是如果有一个工具可以提供确切的位置,那就太好了.
awesome-ocaml有一个关于开发工具的部分,应该会有所帮助.
PS您正在寻找的功能是@@,它在标准库中.
ocp -index包提供了搜索 API 函数的基本工具,例如:
$ ocp-index locate '|>'
/home/ivg/.opam/devel/build/ocaml/stdlib/pervasives.ml:39:0
Run Code Online (Sandbox Code Playgroud)
ocp -browser是该实用程序的一个漂亮的界面。
它们都与 Emacs(和其他流行的文本编辑器)集成。说到文本编辑器和 IDE,Merlin是一个杀手级功能,没有它我就无法想象 OCaml 编码了。它能够直接跳转到定义、提取文档和增量类型检查。
说到基于网络的搜索,有一个隐语文档生成器,它有一个 API 搜索引擎,具有类型搜索、全文搜索和正则表达式的功能。一个项目有点被废弃,不能与最新的 OCaml 一起使用。
我们分叉了它,更新到最新的 OCaml,修复了一些错误,并增强了统一过程以获得更好的类型搜索。结果可以在这里找到。
主要功能之一是按类型清单进行搜索,它忽略诸如函数中的参数排序、字段名称、记录名称和元组之间的差异(例如,string * int与 相同{name : string; age : int})和别名等不相关的事物。例如,在我们的项目中,有相当多的别名,例如type bil = stmt list = Stmt.t list = Stmt.t Core_kernel.Std.list = .... 您在搜索时可以选择任何名称(使用类型清单),因为算法将正确统一所有别名。