다른 문자열 (w2)이있는 문장에서 문자열 (w1)을 바꿔주는 함수를 만들려고합니다. 내가 '정의되지 않은 변수를 "주"'오류가 발생하고, '경고 : 사용 정의가 아니라`W1'하고있어,Haskell - 함수에서 단어 바꾸기
swapwords :: String -> String -> String -> String
swapwords w1 w2 [] = []
swapwords w1 w2 (x:xs)
| length (x:xs) < n = (x:xs)
| otherwise = do
if w1 == take n (x:xs) then w2 ++ swapwords w1 w2 (drop n (x:xs))
else x:swapwords w1 w2 xs
where
n = length w1
을하지만 '와'W2 '여기에 지금까지 가지고있는 것입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
Text.Data.Text
는 들여 쓰기 문제 같은데 지원하지 않습니다, 지금에 의해 이에 대한 아마 더 나은; 하스켈은 공백에 민감하다는 것을 기억하십시오. –또한이 컨텍스트에서 do를 사용하지 않아야합니다. 이것은 모나드로 작업하고 싶을 때 (그리고 목록이 모나드를 구성하는 동안 여기에서 모나드를 사용하지 않을 때) 예약되어 있습니다. – bheklilr