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

관련 문제