我知道我在这里提出了错误的问题,但是我是从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中,我可以导入模块和类型模块。得到一个清单。
答案 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;。
通常在该模块中描述适用于模块中定义的数据的功能。但是数据项也可以符合其他接口,即类型类(如Foldable
,Traversable
,Applicative
等),并且为这些类型定义的所有函数都是也适用。
不仅如此,您还可以在自己的模块中定义类型类,并通过编写所需函数的实现来描述已存在的类型。这使得找到所有适用的功能&#34;甚至更依赖于背景。