【发布时间】:2017-07-29 10:16:29
【问题描述】:
我知道这个问题之前已经被问过很多次,并且我已经仔细阅读过它们,但这并不能帮助我回答我的问题类型。我对 Haskell 很陌生,
假设我们有以下内容:
filter p [] = []
filter p (h:l) = if (p h) then (h:(filter p l)) else (filter p l)
我有两个问题
如何调用过滤器?我只知道你通过
p这是一个列表老实说我一般不知道什么是多态类型,也搞不清过滤函数的多态类型。
我不明白函数过滤器在 if 语句中的作用。
如果您能帮助我解决这两个问题,我将不胜感激。
有很多资源可以解释多态性,但我不明白。
【问题讨论】:
-
p不是一个列表,它是一个谓词,即一个函数a->Bool。filter的第二个参数是一个列表。可以通过加载您的代码并使用:t filter向 GHCi 询问类型。我认为您应该阅读一些 Haskell 教程,并先学习语言基础知识:您似乎对上面的代码感到很困惑,所以您应该先尝试熟悉更基本的代码。
标签: list function haskell polymorphism