2011-02-11 8 views
3

난 내가 목록이 있습니다얼랑지도 중첩 된 목록

[["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]]. 

내가 어떻게이 목록의 각 요소에 applicate 기능 F 수 있습니까? 이 목록을 어떻게 매핑 할 수 있습니까?

감사합니다. 입력이 함수를 평가 목록이 아닌 경우

deepMap(Fun, T) -> 
    case is_list(T) of 
    true -> lists:map(fun(E) -> deepMap(Fun,E) end, T); 
    false -> Fun(T) 
    end. 

:

답변

2

당신은 뭔가를 수행하는 deepMap 함수를 정의 할 수 있습니다. 그것이 목록 인 경우 사용자의 기능을 사용하여 map을 사용하여 모든 요소에 deepMap을 적용하십시오.

+5

이 경우 문자열이 목록이기 때문에 실제로는 다른 코드가 필요합니다. 이 코드는 각 문자 (정수)에 대해 Fun을 호출합니다. –

7

"asd"를 의미하는 요소로 가정하면 주 목록은 항상 예제와 같이 두 단계 깊게 표시되며 반환되는 결과는 같은 형식이어야합니다. 지도/2 또는 목록 이해 아래 :

List1 = [["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]] 
[ [ F(String) || String <- List2 ] || List2 <- List1 ] 

당신이 당신의 요소는 [ "ASD", "ddsa"] 것을 의미하는 경우는 목록을 사용합니다.

List1 = [["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]] 
[ F(List2) || List2 <- List1 ] 
+4

그리고 목록을 평탄화하고 중첩되지 않은 값 목록을 반환하려면'[F (String) || SubList <- 목록, 문자열 <- SubList>'. – rvirding