문제

두 ML 방언을 차별화하는 것은 무엇입니까?

도움이 되었습니까?

해결책

많은 차이점, 일부 기술적, 일부 사회 정치학이 있습니다. 먼저 더 중요한 차이를 두려고 노력했습니다.

  • SML은 정의와 표준을 가진 언어입니다. 안정적입니다 (실제로는 얼어 붙어 진화 할 수 없습니다). 객관적인 CAML은 Inria의 소규모 그룹에 의해 제어되는 구현입니다. 그것은 계속 발전하고 있습니다. (IMO 진화는 잘 관리됩니다.)

  • SML에는 많은 구현이 있습니다. CAML에는 단 하나가 있습니다.

  • 객관적인 CAML에는 여러 가지 추가 기능이 있으며, 가장 두드러진 것은 아마도 물체와 다형성 변이체 일 것입니다.

  • 두 언어는 레코드 유형의 모델이 크게 다릅니다. 간단히 말해서 CAML에서 레코드 필드의 이름은 고유해야하며, SML에서는 동일한 범위의 두 가지 레코드 유형이 공통점을 가질 수 있습니다. 이 퀴크는 SML에서 CAML로의 포팅을 조금 까다로울 수 있습니다.

  • 구문 차이가 상당히 있습니다.

  • 라이브러리와 표준 기능은 크게 다릅니다. CAML 라이브러리는 매우 필수적이지만 SML 표준 기본 라이브러리는 더 기능적입니다. 예를 들어, 기능 구성은 SML에서 최상위 원시입니다. CAML 라이브러리의 일부가 아닙니다. CAML 문자열 라이브러리는 폴드 기능을 제공하지 않습니다 (적어도 버전 3.08). 많은 CAML의 구현 List 기능은 매우 긴 목록의 경우 안전하지 않습니다. 그들은 스택을 불고 있습니다.

  • 유형 시스템은 미묘하게 다릅니다 : CAML에서 표현식에 유형 주석 e : ty 유형이 있으면 허용됩니다 ty 통일 유형과 함께 e. SML에서 e : ty 유형 인 경우에만 허용됩니다 ty 이다 사례 유형의 e. 이 차이는 표현이 다형성이라고 주장하기 위해 유형 주석을 사용하는 것이 불가능하기 때문에 CAML의 주석을 실제로 덜 유용하게 만듭니다.

  • CAML 모듈 유형 또는 서명) 및 (콘크리트) 구현 (호출 모듈 또는 구조) sml보다. SML에서는 거의 모든 일이 진행되며 좋은 컨벤션을 설정하기 위해 프로그래머에게 의존해야합니다. CAML에서는 컴파일러가 훌륭한 규칙을 설립하고 시행합니다.

  • SML에서 산술 연산자는 플로팅 지점 및 정수 데이터 모두에 적용되도록 과부하가됩니다. CAML에서는 운영자가 과부하되지 않습니다. 부동 소수점 운영자는 여분의 점으로 표시됩니다.

  • SML에서 프로그래머는 Infix 연산자의 우선 순위와 만성을 제어 할 수 있습니다. CAML에서는 이들이 운영자 이름의 첫 번째 문자에 의해 결정됩니다. 이 제한은 자신의 디스 픽스 표기법을 정의 할 수있는 이점을 제한합니다.

편집 의견으로 완성 된보다 자세한 분석을 위해서도 볼 수 있습니다. Adam Chlipala의 비교 페이지.

다른 팁

Norman Ramsey가 언급 한 구문 차이에 대한 자세한 내용은 다음과 같습니다. 몇 가지 웹 페이지가 있습니다.

OCAML은 객체 지향 기능을 추가하고 약간의 구문 차이가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top