2014-06-05 2 views
1

문자열 목록이 있으면 입력 목록 요소의 쉼표로 구분 된 연결로 이루어진 새로운 문자열을 반환하는 소프트웨어를 작성해야합니다.쉼표로 구분 된 문자열로 된 병합 문자열 목록

(comma-con (list "a" "b" "c")) ;=> "a,b,c" 

저는 Scheme 관용구를 쓰고 싶습니다.

지금까지, 나는이 쓴 : 작동

(define (comma-con l) 
    (foldr 
     (λ (x y) (if (string? y) (string-append x "," y) x)) 
     '() 
     l)) 

을하지만, 조금 더러운 것 같다. 그것을 더 나은 방법으로 쓰는 방법이 있습니까? "if"피하기?

답변

4

것은 당신이 필요로 정확히 수행하고 할 수있는만큼 관용적이며, string-join을 사용해보십시오 : 당신이 을 사용하여 문제를 해결하려면,

(string-join '("a" "b" "c") ",") 
=> "a,b,c" 

어쨌든,이 청소기 솔루션입니다 (입력 목록이 비어 있지 않은 것으로 가정) : 표준 제도 (RNRS) 당신이 [sRFI-13 문자열 라이브러리 (HTTP에서`문자열 join`를 가져올해야합니다에서

(define (comma-con lst) 
    (foldl (λ (e acc) (string-append acc "," e)) 
     (first lst) 
     (rest lst))) 
+1

: // srfi .schemers.org/srfi-13/srfi-13.html # string-join) – Sylwester