2016-11-20 212 views
0

地图功能不工作在这条线地图功能无法正常工作?

compPic (a:as) = map (compL a) as

它只是一个字符串而不是字符串列表上工作,你可以找到错误。

compL :: String -> String 
compL bs = [a | b <- bs, a <- 
       if (b == ' ') 
        then "X" 
       else if (b=='X') 
        then " " 
        else [b]] 


compPic :: [String] -> [String] 
compPic [] = [] 
compPic (a:as) = map (compL a) as 

回答

2

让我们来看看map的定义Prelude

map _ []  = [] 
map f (x:xs) = f x : map f xs 

在这里,我们看到map被定义为在列表中向被正在应用的函数传递的每个值。此外,我们不需要基础案例,因为map处理递归。因此,你应该重写compPic为:

compPic :: [String] -> [String] 
compPic as = map compL as 

或者,ETA-降低:

compPic = map compL 
+0

那么你解释非常技术上。谢谢@mnoronha。你人真好 :) – Shahzad