List Haskell-列表遍历

List Haskell-列表遍历,list,if-statement,haskell,traversal,List,If Statement,Haskell,Traversal,我想遍历列表列表并检查每个元素是否等于字符。我该怎么做?即使在编写if语句时也会出现错误。如果你能帮忙,我将很高兴 我要遍历的示例列表: maze = [ ['E','#','#','#'], [' ','#',' ',' '], [' ',' ',' ',' '], ['#','#','#','S'] ] 如果声明: checkElement :: Char -> Bool checkElement x = if x == '#' then

我想遍历列表列表并检查每个元素是否等于字符。我该怎么做?即使在编写if语句时也会出现错误。如果你能帮忙,我将很高兴

我要遍历的示例列表:

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新手的常见问题(即使他们似乎不是编程新手)。