(haskell的新手)如果语句生成解析错误

时间:2019-05-12 00:49:41

标签: haskell

如果条件适用,我希望函数创建一个元组列表,但它似乎不起作用。 (我是Haskell的新手)


exist'z s = [ y | y <- s, toLower (y) =='z' ]
freq'z s =  if (exsit'z s /= "") then [( 'z', length (exist'z s ))]

1 个答案:

答案 0 :(得分:5)

在Haskell中,if子句是表达式。这意味着他们需要始终求值,并且必须具有确定的类型。更具体地说,没有if的{​​{1}}子句是语法错误。另外,elsethen的情况必须具有相同的类型。

在您的情况下,如果条件适用,您可以让一个函数创建一个元组列表,但是要使该函数的类型正确,该函数将需要返回一个元组列表。为什么不确定为什么要返回元组列表,因为您编写它的方式在else情况下始终是单例。您可以附加then并使其起作用,但也许更合适的类型是else []

Maybe