표준 ML의 모듈 시스템과 OCaml 모듈 시스템간에 차이가 있다면 제 질문은 무엇입니까? OCaml은 펑터 (functor), 오름차순 (ascriptions) 등을 모두 지원합니까?Standard ML의 모듈 시스템과 OCaml 모듈 시스템의 차이점은 무엇입니까?
답변
기능적으로나 의미 적으로는 몇 가지 차이점이 있습니다.
- 투명 서명 귀속
- 모듈 수준
let
- 대칭 공유 제약
- 구문 유형에 걸쳐 펑 설탕과 값
:
는 SML 지원하지만 OCaml의 특징 특징 OCaml 4는 SML이 아니지만 :
,- 고차 펑
- 재귀 모듈
- 로컬 모듈
- 중첩 일류 같은
- 모듈 서명
- 일반 모듈 공유 (
sig with module A = M
) module type of
여러 가지 SML 구현은 이러한 기능 중 일부를 확장 기능으로 제공합니다. (SML/NJ, Alice ML), 모듈 공유 (SML/NJ, Alice ML), 중첩 서명 (Moscow ML, Alice ML)과 같은 상위 펑터 (SML/NJ, 모스크바 ML, 앨리스 ML) , 재귀 모듈 (Moscow ML) 등이있다. SML에서
, 펑은 생식이다, 즉 두 번 동일한 펑인가 수단 :
의미 와이즈, 가장 큰 차이는, 특히 펑에 대해 입력 등가의 치료에 같은 논증은 언제나 신선한 유형을 산출한다.
편집 : OCaml 4는 선택적으로 펑터 생성 기능을 추가했습니다.
를 OCaml에서, 펑 똑같은 인자 (및 추가 통사 제한)로 두 번 같은 펑을 적용하는 등가 유형의 재생 즉, 실용적이다. 이 의미론은보다 유연하지만 추상화를 깨뜨릴 수도 있습니다 (예 : this paper, 섹션 8에있는 예 참조).
OCaml의 특정 유형 동등한 항목 유형 시스템에 의해 표현 될 수없고, 자동으로 삭제되거나 (예컨대 this bug 하나 놀라운 예 참조) 망가 것을 의미 서명 순수 통사 개념을 갖는다.
편집 : OCaml 4.02는 참조 된 버그의 특정 예를 수정하는 "모듈 별칭"에 대한 특별한 의미를 추가했지만 구문 서명의 일반적인 제한은 지속됩니다.
또 다른 주목할만한 차이점은 OCaml로의 모듈 형 시스템으로 인해 SML 허용하지 않는 추상적 인 서명, 자사의 허락에, (즉, 타입 검사가 종료되지 않을 수 있습니다) 결정 불가능하다는 것이다.
- 1. Ocaml 언 바운드 모듈
- 2. OCaml 모의 모듈 생성
- 3. 모듈 사용 Ocaml 집합
- 4. 모듈 식 시스템의 경우
- 5. OCaml 모듈 : include AND open?
- 6. 다중 모듈 Ant 빌드 시스템과 Eclipse
- 7. 전경 - 배경 시스템과 실시간 운영 시스템의 차이점
- 8. ocaml 모듈 유형에서 위임 유형 * not * abstract
- 9. OCaml : 변형 유형과 모듈 정의 사이의 원형성
- 10. 두 모듈 사이의 OCaml 함수 이름 충돌
- 11. 모듈
- 12. npm 모듈 jsonwebtoken과 jwt-simple의 차이점은 무엇입니까?
- 13. 모듈 처리와 다중 처리의 차이점은 무엇입니까?
- 14. 하스켈의 모듈, 패키지 및 라이브러리의 차이점은 무엇입니까?
- 15. PHP에서 플러그인, 모듈, 애드온 등의 차이점은 무엇입니까?
- 16. 앱 종속성과 모듈 종속성/플러그인의 차이점은 무엇입니까?
- 17. maven에서 상속과 서브 모듈 개념의 차이점은 무엇입니까?
- 18. ocaml 최상위 레벨에서 모듈/서명을 검사하는 방법은 무엇입니까?
- 19. 모듈 케이스 이름 혼란
- 20. 모듈
- 21. OCaml의 약속 그래픽 모듈
- 22. 다단계 페이지 시스템과 다단계 캐시 시스템의 차이점 (L1, L2, L3)
- 23. Marketo 모듈 - 잘못된 모듈
- 24. 모듈 안에있는 루비 모듈
- 25. 어떻게 모듈 require.js이 모듈
- 26. Boost.Python : 모듈 내부 모듈
- 27. 모듈
- 28. 모듈
- 29. 모듈
- 30. 모듈
다음 클린업에서 모듈 시스템에 대한 "최근"(주로 당신) 연구에 대한 합리적인 시작을 가정 할 때, 미래의 * 모듈 시스템, 또는 더 정확하게는 이러한 기능 세트가 변경 될 수있는 방법에 대해 약간의 기회를 가져야한다고 생각합니다. ML 언어의 반복. 그것은 매우 재미있는 해답으로 매우 흥미로운 대답이 될 것입니다. – gasche
나는 그 질문에 피기 백하는 것이 부적절하다고 생각했다;). 필자의 개인적인 대답은 위에 링크 된 F-ing 모듈에있는 내용 일 것입니다. 나열된 모든 기능을 깨끗하고 (상당히) 간단한 방식 (생성 및 적용 가능한 펑터 모두 포함)에서 재귀 모듈 빼기로 포함합니다. 나는 그렇게 확신하지 못합니다. OCaml의 재귀 모듈은 너무 미숙하고 제한적이지만, 포괄적 인 접근 방식은 궁극적으로 MLML을 구성하는 요소의 대부분을 포기하게됩니다. 배심원 단은 가치가 있는지 여부에 관해 아직 나와 있지 않습니다. –
@AndreasRossberg MixML과 관련하여 주요 부분 ML 모듈을 포기 함으로서 당신이 무엇을 의미하는지 모르겠다. 필자가 언급 한 논문에서 ML 모듈은 MixML 스펙트럼의 끝점으로 볼 수 있다고 정교하게 설명했다. (내가 틀렸다면, 모듈을 만드는 기본 아이디어는 매개 변수화가 아닌 진동에 의한 것이었다.) – fedvasu