2013-06-08 2 views
12

하스켈의 모듈, 패키지 및 라이브러리의 차이점은 무엇입니까? 모든 하스켈 모듈로 기본적으로 수입 된 표준 모듈 : http://www.haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html
서곡에서하스켈의 모듈, 패키지 및 라이브러리의 차이점은 무엇입니까?

. http://www.haskell.org/haskellwiki/Base_package
자료 패키지에서

: 기본 패키지은 서곡과 지원 라이브러리, 데이터 구조에서 콤비를 구문 분석 및 유틸리티 디버깅에 이르기까지 유용한 라이브러리의 큰 컬렉션을 포함합니다.

감사합니다.

은 참조 : What's the difference between a Python module and a Python package?

+2

* * 패키지 *는 버전 및 설명과 같은 데이터와 함께 언어 보고서에 설명 된 * 모듈 * 모음입니다. 종종 다른 프로젝트 a * library *에서 사용하기위한 모듈을 사용하여 패키지를 호출합니다. – gspr

+0

@gspr * library *가 * package *의 또 다른 이름 인 경우 ezyang이 말하면 * Cabal은 패키지 당 하나의 공용 라이브러리 만 지원합니다 *? [출처] (https://www.reddit.com/r/haskell/comments/5j4szk/nyhug_backpack_to_work_towards_backpack_in/dbe2yq3/) –

+0

haskell 프로그램은 어떻습니까? – Adam

답변

11

모듈 함수, 타입, 클래스, ... 공통의 공간에서 함께 넣어의 집합입니다.

라이브러리은 함께 있어야하며 프로그램이나 다른 라이브러리에서 사용할 수있는 모듈 집합입니다.

패키지은 라이브러리 또는 실행 파일 또는 둘 다를 포함 할 수있는 배포 단위입니다. 커뮤니티와 코드를 공유하는 방법입니다.

라이브러리가 패키지에서 분리되어있을 필요는 없습니다. 즉,이 프로젝트에서 사용되는 라이브러리를 프로젝트에 포함하는 것이 완벽하게 허용됩니다. 따라서 코드는 명확성과 유지 보수성을 위해 나머지와 분리되어 있습니다. 이것은 비즈니스 로직 코드에서 일부 범용 목적을 분리하는 좋은 방법이기도합니다.이 lib는 필요에 따라 결국 프로젝트간에 또는 커뮤니티와 공유 될 수 있습니다.

+1

패키지에 여러 라이브러리가 포함될 수 있습니까? 패키지는 라이브러리 내부와 외부 모두 다른 모듈을 포함 할 수 있습니까? Backpack에서 소개 한 시그니처 및 인터페이스는 어디에 적합합니까? –

+1

"패키지는 Hackage"A Latter의 것입니다 : https://stackoverflow.com/questions/5480982/packages-modules-and-import-in-haskell?rq=1 – Adam

관련 문제