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

时间:2017-11-22 21:53:07

标签: haskell

我知道我在这里提出了错误的问题,但是我是从Python进入Haskell的,我想知道如何获得类似于类的可用方法列表。例如,如果我使用HXT来解析XML文件,并且我可以在结果数据结构function parseQueryParams(query) { //You get a '?key=asdfghjkl1234567890&val=123&val2&val3=other' const queryArray = query.split('?')[1].split('&'); let queryParams = {}; for (let i = 0; i < queryArray.length; i++) { const [key, val] = queryArray[i].split('='); queryParams[key] = val ? val : true; } /* queryParams = { key:"asdfghjkl1234567890", val:"123", val2:true, val3:"other" } */ return queryParams; } 上使用某些函数,例如函数NTree,我将如何使用从ghci那里得到一份清单?在Python中,我可以导入模块和类型模块。得到一个清单。

2 个答案:

答案 0 :(得分:3)

在Python中,您可以使用dir来了解对象或函数的方法和字段。 Haskell中没有类似的东西。 :info在类型或构造函数上使用时偶尔会有用,但与Python的dir相比,它的输出是空闲的。

在Python中,您可以使用dir来了解模块定义的函数,类和值。在Haskell中,您可以在ghci中使用:browse来执行相同的操作。

在Python中,您可以使用help来获取描述函数或其他对象的程序员编写的文本。在Haskell中,你可以浏览Hackage上的Haddocks来做同样的事情。假设您已在本地安装了相应的文档,但表面上已将a tool表示为ghci,但它维护得不好,并且已经多次破坏了我。

答案 1 :(得分:3)

https://www.haskell.org/hoogle/可以帮助一点。给它一个模块名称或所需的签名。

Haskell中的类与Python不同。 Python的类实例是部分应用函数的集合(绑定到self)。 Haskell类更像是来自Java甚至Go的接口:如果某些内容符合函数签名列表,它就可以属于类&#34;。

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

不仅如此,您还可以在自己的模块中定义类型类,并通过编写所需函数的实现来描述已存在的类型。这使得找到所有适用的功能&#34;甚至更依赖于背景。