我如何把一个布尔值放入一个列表中,并在Haskell中输出它?

h6my8fg2  于 2023-02-09  发布在  其他
关注(0)|答案(2)|浏览(153)

所以我是Haskell的新手,下面我尝试编写一个函数,它接受给定的e值和给定的列表,并确定给定的值是否出现在给定的列表中,如果给定的值出现,则输出True,如果没有,则输出False。

inListm e [] = False 
inListm e (x:xs)
 | e == x = True || inListm e xs
 | otherwise = False || inListm e xs

如果

inListm 2 [0, 2, 1, 2]

则输出为

True

但是,我希望最终输出是这样的列表

[True]

我已经尝试通过

inListd e [] =  False : []
inListd e (x:xs)
  | e == x = True : [] || inListd e xs
  | otherwise = False :[]  || inListd e xs

但所有给我的是一个错误,所以我想知道我如何才能解决这个问题

de90aj5v

de90aj5v1#

考虑重用现有函数;重用是使编写大型程序成为可能的一个重要因素。2就像这样:

inListd e xs = inListm e xs : []
-- OR
inListd e xs = [inListm e xs]
p4rjhz4m

p4rjhz4m2#

你的思路是对的。唯一需要做的是如果你有结果就返回一个列表,所以:

inListd :: Eq a => a -> [a] -> [Bool]
inListd e [] = [False] 
inListd e (x:xs)
 | e == x = [True]
 | otherwise = inListd e xs

话虽如此,将结果 Package 在列表中似乎没有多大意义。

相关问题