如果条件适用,我希望函数创建一个元组列表,但它似乎不起作用。 (我是Haskell的新手)
exist'z s = [ y | y <- s, toLower (y) =='z' ]
freq'z s = if (exsit'z s /= "") then [( 'z', length (exist'z s ))]
答案 0 :(得分:5)
在Haskell中,if
子句是表达式。这意味着他们需要始终求值,并且必须具有确定的类型。更具体地说,没有if
的{{1}}子句是语法错误。另外,else
和then
的情况必须具有相同的类型。
在您的情况下,如果条件适用,您可以让一个函数创建一个元组列表,但是要使该函数的类型正确,该函数将需要返回一个元组列表。为什么不确定为什么要返回元组列表,因为您编写它的方式在else
情况下始终是单例。您可以附加then
并使其起作用,但也许更合适的类型是else []
:
Maybe