2017-12-19 14 views
-3

안녕하세요 저는 하스켈 프로그래밍에 조금 익숙합니다. 나는 단지 내가 하스켈에있는 명단에서 10 단어를 어떻게 찾을 수 있는지 알고 싶었다. 목록의haskell의 목록에서 일반적인 단어를 찾는 방법

예 :

["there", "is", "is", "a", "man", ...] 

사용 예제 :

getCommonWords xs = count(10, xs) 

그리고 목록에서 10 개 일반적인 단어를 삭제하는 방법 :

removeCommonWords xs = drop(10, xs) 

어떤 도움 또는 오른쪽 방향으로 매우 감사 할 것입니다.

+1

"일반적인 단어"정의 - 같은 단어를? 그렇다면 제안 된'count' 함수에서'10'은 무엇을 의미합니까? 우리가 작업 할 수있는 [mcve]를 제공하기 위해 예제를 더 확장하십시오. – hnefatl

+0

'drop (10, xs)'는 유형 오류입니다. 'drop'의 첫번째 인수는 튜플이 아닌 숫자 여야합니다. – melpomene

답변

2

이 당신이 여기에 두 ...

을 결합 할 필요가 블랙리스트에 오른 단어

filterBlackList = filter (`notElem` blacklist) 

를 필터링
commonwords n = snd . unzip . take n . reverse . sort . map pair . group . sort 
    where pair x = (length x, head x) 

을 시작할 수 있습니다하면 두 가지를 연결하는 하나의 사소한 방법입니다 기능

removecommon :: Ord a => Int -> [a] -> [a] 
removecommon n ws = filter (`notElem` commonwords n ws) ws 
예를

> let ws = words "she sells seashells by the seashore the shells she sells are surely seashells so if she sells shells on the seashore I'm sure she sells seashore shells" 

> removecommon 6 ws 

에 대한

다시 제공

["by","are","surely","so","if","on","I'm","sure"] 
+0

감사합니다. 덕분에 도움이 될 것입니다. –

+0

가장 자주 사용되는 단어 10 개를 텍스트에 어떻게 찾을 수 있습니까? –

+0

예를 들어, 12에 정수로 출력해야합니다. –