2009-12-20 2 views
6

나는 Practical Common Lisp을 다룰 예정이다. 거의 끝났고, 아직까지 대답하지 못했던 질문은 "require"와 "load"의 차이다.공통 리스프에서 require와 load의 차이점은 무엇입니까?

그래서 차이점은 무엇입니까?

감사합니다.

+0

이 질문을 읽고 답변을 얻은 분에게 : _ **는 필수 항목이며 ** 전체 모듈 시스템 **은 ANSI 표준화 이후 Common Lisp에서 더 이상 사용되지 않습니다 **! – hijarian

답변

8

require은 각각 하나 이상의 파일로 구성 될 수 있습니다.

load은 임의의 단일 파일을로드하는 데 사용됩니다. 모듈이 이미 존재하는지 여부

require 기능 검사 (a 대소 문자 비교를 사용); 모듈이 없으면 에 적절한 파일 또는 파일 집합을로드해야합니다. 경로 이름 인수가있는 경우 경로명 또는 파일이 순서대로로드되는 경로 이름 목록 인 경우 이 오른쪽에 있습니다. pathname 인수가 이 아니거나 제공되지 않으면 시스템 은 로드 할 시스템에 따라 시스템 종속 방식으로 결정하려고 시도합니다. 여기에는 일반적으로 모듈 이름 의 일부 중앙 레지스트리와 관련 파일 목록이 포함됩니다.

자료 : http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node119.html

load 기능은 리스프 환경에 파일 이름에 의해 명명 된 파일을로드합니다. 은 파일의 텍스트 ( 파일)가 자동으로 개체 (이진 파일) 과 적절한 것으로 구분 될 수 있다고 가정합니다.이 파일은 구현에 따라 적절하게는 파일 유형에 따라 이 될 수 있습니다. filename의 기본값은 변수 default-pathname-defaults에서 가져옵니다. 병합 후 파일 이름이 명시 적으로 유형을 지정하지 않고 파일의 텍스트 유형과 객체 유형 모두가 파일에서 사용 가능한 경우로드하려면 에 의해 더 적합한 파일을 선택해야합니다. 일부 구현 - 의존 수단.

출처 : http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node217.html

+4

CLTL은 CL의 기본 참조가 아닙니다. HyperSpec이 더 좋습니다. 적절한 장소에 대한 짧은 링크는 http://l1sp.org/cl/load 또는 http://l1sp.org/cl/require를 참조하십시오. – Xach

2

의 차이는 아직로드되지 않은 경우 (require) 모듈을로드이다; (load) 파일을로드합니다.