【发布时间】:2019-03-19 12:31:42
【问题描述】:
我需要在递归函数中返回例如整数或布尔值。
我的问题的示例代码:
findInt :: [Int] -> Either Int Bool
findInt (x:xs) =
if x == 1 then x
else False : findInt xs
然后错误显示无法将预期类型“Either Int Bool”与实际类型“Int”匹配。但是我想检查该元素是否在此列表中,如果存在,它将返回该元素并通过返回布尔值告诉我它是否不在。
【问题讨论】:
-
如果您添加了一些输入示例和您期望的相应输出,例如
findInt [...] == ...用于各种情况,那么回答您的问题会更容易。 -
事实上,你的函数说“给定一个至少包含一个元素的列表,如果第一个元素是整数 1,则返回该整数,否则返回一个以布尔值
False开头的列表接下来是在列表的其余部分调用findInt的结果;当给定一个空列表时,引发一个错误”,这没有多大意义,所以很难确定你想做什么来帮助你。
标签: haskell recursion types return-type