在Haskell中,如何获得数据结构可用函数的列表?

在Haskell中,如何获得数据结构可用函数的列表?,haskell,Haskell,我知道我在这里问了一个错误的问题,但我是从Python来到Haskell的,我想知道如何得到一个类的可用方法列表的等价物。例如,如果我正在使用HXT解析XML文件,并且在生成的数据结构上可以使用一些函数,NTree,比如函数getChildren,我将如何从ghci获取它们的列表?在Python中,我可以只导入一个模块并键入module。要得到一份清单 在Python中,您可以使用dir了解对象或函数的方法和字段。哈斯克尔没有类似的例子:info在类型或构造函数上使用时偶尔有用,但与Python

我知道我在这里问了一个错误的问题,但我是从Python来到Haskell的,我想知道如何得到一个类的可用方法列表的等价物。例如,如果我正在使用HXT解析XML文件,并且在生成的数据结构上可以使用一些函数,
NTree
,比如函数
getChildren
,我将如何从ghci获取它们的列表?在Python中,我可以只导入一个模块并键入module。要得到一份清单

在Python中,您可以使用
dir
了解对象或函数的方法和字段。哈斯克尔没有类似的例子
:info
在类型或构造函数上使用时偶尔有用,但与Python的
dir
相比,它的输出是多余的


在Python中,可以使用
dir
了解模块定义的函数、类和值。在Haskell中,您可以在ghci中使用
:browse


在Python中,您可以使用
help
获取一些程序员编写的描述函数或其他对象的文本。在Haskell中,您可以在Hackage上浏览Haddock以执行相同的操作。如果您在本地安装了适当的文档,表面上会将此功能带到ghci,但是它没有得到很好的维护,并且对我来说已经坏了好几次。

可能会有所帮助。给它一个模块名或所需的签名

Haskell中的类与Python不同。Python的类实例是部分应用函数的集合(绑定到
self
)。Haskell类更像是来自Java甚至Go的接口:如果某个东西符合函数签名列表,那么它可以“属于该类”

适用于模块中定义的数据的功能通常在该模块中描述。但数据项也可以符合其他接口,即类型类(如
可折叠的
可遍历的
可应用的
,等等),并且为这些类型类定义的所有函数也适用


除此之外,您还可以在自己的模块中定义一个typeclass,并通过编写所需函数的实现来描述已经存在的符合它的东西。这使得查找“所有适用函数”更加依赖于上下文。

对于数据结构?还是一个模块?在GHCi:
:browse
中,你是在专门谈论REPL吗?公平地说,我还没有找到很多类型系统没有完全告知我对函数的理解的函数,因此
帮助
从来都不是一个大损失(同样来自Python)