List Haskell-列表遍历
我想遍历列表列表并检查每个元素是否等于字符。我该怎么做?即使在编写if语句时也会出现错误。如果你能帮忙,我将很高兴 我要遍历的示例列表:List Haskell-列表遍历,list,if-statement,haskell,traversal,List,If Statement,Haskell,Traversal,我想遍历列表列表并检查每个元素是否等于字符。我该怎么做?即使在编写if语句时也会出现错误。如果你能帮忙,我将很高兴 我要遍历的示例列表: maze = [ ['E','#','#','#'], [' ','#',' ',' '], [' ',' ',' ',' '], ['#','#','#','S'] ] 如果声明: checkElement :: Char -> Bool checkElement x = if x == '#' then
maze = [ ['E','#','#','#'],
[' ','#',' ',' '],
[' ',' ',' ',' '],
['#','#','#','S'] ]
如果声明:
checkElement :: Char -> Bool
checkElement x = if x == '#'
then False
else True
最简单的方法是使用
map
功能:
map::(a->b)->[a]->[b]
地图[]=[]
映射f(x:xs)=fx:mapfxs
当您想映射嵌套列表时,可以使用(map.map):(a->b)->[[a]]->[[b]]]
:
λ(map.map)复选元素迷宫
[[假,真,真,真]
,[假,真,假,假]
,[假,假,假,假]
,[对,对,对,错]]
还有一点值得注意的是,如果x为则为False,否则为True
可替换为非x
:
checkElement::Char->Bool
checkElement x=不是$x='#'
欢迎来到StackOverflow!当你的问题涉及某种错误时,通常最好将错误的全文张贴出来,这样试图回答你问题的人就不必猜测了。另请参见由于缺乏清晰性而投票关闭,而非$x==y
使用x/=y
,更具争议的是,\x->x/=y
使用(/=y)
,此时它足够短,甚至不值得定义为单独的函数。@DanielWagner果然如此。我只想强调一点,如果。。。如果。。。然后False else True
总是不必要地复杂,这似乎是Haskell新手的常见问题(即使他们似乎不是编程新手)。