다음 기능이 왜 동일하게 작동하지 않습니까? 첫 번째는 적절한 문자열 분할을하고 있지만, 두 번째는 무한 목록을왜이 두 코드는 똑같이 동작하지 않습니까?
오른쪽 코드 생성, 영원히 ""계속 추가 할 것 같다
my_split :: [Char]->Char->[[Char]]
my_split [] _ = [[]]
my_split lista y
| notElem y lista=[lista]
| otherwise=isMatch:(my_split rest y)
where
isMatch=takeWhile (/=y) lista
rest=tail $ dropWhile (/=y) lista
잘못된 코드 :
my_split :: [Char]->Char->[[Char]]
my_split [] _ = [[]]
my_split lista y
| notElem y lista=[lista]
| otherwise=isMatch:(my_split rest y)
where
(isMatch,rest)=break (==y) lista
유일한 다른 부분은 휴식 조건이며 실제로 나에게도 똑같은 일을해야하는 것처럼 보입니다. 첫 번째 함수 형식은 내 결과에 빈 목록을 추가하지 않도록해야합니다 ... noobish에 대해 죄송합니다. 사전에 질문 및 감사