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

のはPreludemapの定義を見てみましょう。ここでは

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

は、我々はmapが適用されています機能のリスト内の各値を渡すように定義されていることがわかります。さらに、mapが再帰を処理するため、基本ケースは必要ありません。

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

あるいは、ETA-削減:

compPic = map compL 
+0

さてあなたは非常に技術的説明したがって、あなたはとしてcompPicを書き換える必要があります。ありがとう@mnoronha。あなたは優しいね :) – Shahzad

関連する問題