2015-01-24 6 views
1

최근에 숭고한 텍스트로 코딩을 시작했습니다. 이것은 제가 Leksah를 사용할 때주의하지 않은 몇 가지 경고에주의를 기울였습니다.경고 :`Module`의 가져 오기는`Module '의 인스턴스를 가져 오는 것 외에는 중복됩니다.

import qualified Data.Set as S 

제공합니다 : 한편

Warning: 
    The qualified import of `Data.Set' is redundant 
    except perhaps to import instances from `Data.Set' 
    To import instances alone, use: import Data.Set() 

, Data.Foldable에서이 두 수입 중 하나가 경고주지 않는다 : 그래서이 하나있어

import Data.Foldable (foldrM, mapM_,foldr,foldl',concat) 
-- or 
import Data.Foldable 

을 그래서 Data.Set에 대한 경고가 무엇을 의미하는지 모르겠습니다. "중복"은 필요하지 않다는 것을 의미합니다. 가져 오기를 제거하면 Data.Set에 많은 것을 사용하기 때문에 컴파일되지 않습니다.

한편 옆에 앉아있는 것은 import qualified Data.Map as M이며 경고도 표시되지 않습니다.

그래서 나는 그 경고가 말하는 것에 대해 완전히 혼란스러워합니다.

+6

우리가 스스로 재현 할 수있는 코드를 보여줍니다. –

답변

6

그것은 일반적 의미 중 하나를 이미 가져 다른 모듈에 의해 수입 된 모듈을 가져

  • 당신이 모듈을 수입하지만 전혀 사용하지 않는,
  • .

더 이상 모듈을 사용하지 않는 일부 리펙토링의 영향 일 수 있습니다. 또는이 모듈을 가져 와서 나중에 사용하기를 기대했을 수도 있습니다.

이 메시지는 -Wall 옵션을 사용하여 프로젝트를 컴파일 할 때 생성됩니다.

오류를 나타내는 줄을 삭제하려고 시도하면 종종 작동합니다 ;-)

+0

당신은 정확하고 나는 바보 같은 짓을 한 것으로 밝혀졌습니다. 나는 하나의 모듈을 2 개의 분리 된 모듈로 나누었습니다. 가져 오기가 더 이상 필요하지 않았습니다. 경고는 내가 심지어 데이터를 사용하고 있지 않다는 것을 말하고 있었다. 내가 그것을 제거하고 그것이 잘 컴파일 될 때까지 나는주의하지 않았다. 고마워, 그건 정말 어리석은 일 이었어. – TheCriticalImperitive

+0

* 다른 모듈이 모듈을 어느 모듈로 내보낼지를 알 수있는 방법이 있습니까? – Bergi

+0

@bergi "try and see"라고 말하거나 도서관 소스 코드를보고 싶습니다. 나는 당신을 도울 수있는 컴파일러 옵션을 모른다. (그러나 나는 모든 컴파일러 옵션을 모른다. ;-). – zigazou