2016-11-20 206 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