2014-10-05 9 views
1

CLEAN에 문제가 있습니다. 어떻게 문자열의 모든 문자를 소문자로 만들 수 있습니까? 난 char 배열을 통해 그것을 할 수 있지만 문자열로도해야합니다.CLEAN에서 문자열을 소문자로 변환하는 방법

stringLower _ = "" 

아무것도에 적용 stringLower는 빈 문자열을 의미

module Something 

import StdEnv, StdLib 

arrayLower:: [Char] -> [Char] 
arrayLower[x:xs] = (map toLower [x:xs]) 


stringLower:: String -> String 
stringLower_ = "" 
stringLowers = toString (arrayLower s) 

Start:: String  
Start = stringLower"SSSsss" 
+2

는'String'가'[숯불]'단지 문법 설탕입니다. – Jubobs

+0

의미 론적으로 동일하다면 코드는 "ssssss"를 생성합니다. – Thomas

+3

이 질문에 대한 권리가 있으십니까? 현재'haskell'과'function-programming' 태그가 붙어 있습니다. 나는 클린을 모르지만, haskell에서는'arrayLower xs = map toLower xs'가 될 것이고'stringLower'가 필요 없을 것입니다. –

답변

4

귀하의 첫 번째 경우 : 은 지금까지 아래의 코드가 있습니다.
중복 된 두 번째 사례에 대한 경고를받지 못했지만 놀랍습니다. (그것은 {#Char} 그래서, 박스 없음)

String배열이고, 당신은 당신이 이미 배열이 작업을 수행하는 방법을 알고 있다고 말하지만, 당신의 arrayLowerChar ([Char])의 목록이 아닌 배열에 대해 정의된다.

이 배열의 이해를 사용하여, 나를 위해 작동 :

stringLower :: String -> String 
stringLower s = {toLower c \\ c <-: s} 
+0

아직 없습니다. 작동 : 유형 오류 [Interleave.icl, 6, stringLower] :지도 근처 : 유형을 통합 할 수 없습니다. 문자열 [v0] – Thomas

+0

@GaborToth이 어때요? (편집 됨.) – molbdnilo

+0

출력은 여전히 ​​"":(컴파일러가 말합니다 : 경고 [Interleave.icl, 9, stringLower] : 대안이 절대 일치하지 않습니다 – Thomas

관련 문제