2013-02-24 3 views
3

다음 빈 수액을 검색 할 수있는 항목이 많습니다. 이유를 알고 싶습니다. 오류가 아닙니다.가져 오기 자격이 없음 - 오류가 아님

postgresql-simple의 FromRow typeclass가 필요했지만 자체 패키지에 있다는 것을 잊었습니다.

import qualified Database.Postgresql.Simple as P 

죄송는 - 너무 말 떨어져 이름을 제거, 그것은 자격이 필요하지 않았 .FromRow 서브 모듈 물론

import qualified Database.Postgresql.Simple.FromRow 

를 원한다. 그러나 "한정된"키워드를 삭제하는 것을 잊었습니다. 너무이 질문은, 왜 익명의 자격을 가져올 수 없습니다 오류입니다 - 그래서

Not in scope: type constructor or class `FromRow' 
Perhaps you meant `Database.PostgreSQL.Simple.FromRow.FromRow' (imported from Database.PostgreSQL.Simple.FromRow) 

: 내가 오타를 발견하는 데 실패로

는 내게 오류, 그리고 더 headscratching를 생성? 뭔가 유용하게 사용할 수 있습니까? 아니면 제가 처음으로이 실수를 저지르기에 어리석은 사람입니까?

+0

문제의 해결책과 함께 문제를 외치고 있습니다. "아마도 당신은 Database.PostgreSQL.Simple.FromRow.FromRow'‽"을 의미했을 것입니다. –

+0

아, 그렇지만 저는 그것을 정확하게 말했습니다. 그리고 나는 "자격을 갖춘"것을 나의 사용법과 의미를 취하여 의미가 일치했을 것이다. 문제는 "귀하가 numbskull에 자격이있는 키워드를 남겼습니다"라는 것입니다. 오류가 컴퓨터의 관점에서 설명하는 고전적인 경우가 아니라 인간의 관점에서 설명합니다. –

답변

15

qualifiedas은 가져 오기 기능과 독립적입니다.

qualified인증 이름 (즉, 모듈 이름을 포함하는 이름)에서만 이름이 사용 가능하다고 말합니다.

as은 단순히 이름을 한정하는 데 사용되는 모듈 이름을 변경합니다.

그래서 모듈을 가져올 수있는 4 개 가지 방법이 있습니다 :

  • import Database.Postgresql.Simple - 자격과 자격이 두 이름은 볼 수 있습니다; 자격을 갖춘 자의 자격은 Database.Postgresql.Simple

  • import Database.Postgresql.Simple as P입니다. 자격을 갖춘 자와 자격이없는 자 모두 표시됩니다. 자격을 갖춘 이름을 볼 수 있습니다 그리고 그들은 Database.Postgresql.Simple

  • import qualified Database.Postgresql.Simple as P으로 규정해야한다 - - 자격을 갖춘 사람은 P

  • import qualified Database.Postgresql.Simple으로 규정해야 자격을 갖춘 이름을 볼 수 있습니다 그리고 그들은 P

으로 규정되어야한다
관련 문제