2012-04-28 2 views
9

저는 사람들이 종종 Scheme과 Racket이 Stack Overflow (및 웹의 다른 곳에서도 마찬가지입니다. 예를 들어, Scheme에 대한 질문은 종종 Racket에서 솔루션을 생성하는 것처럼 보입니다. 으로 태그를 붙이면 응답의 절반이 #lang racket으로 시작합니다.스킴과 라켓이 다릅니 까? 그렇다면 어떻게?

이 두 언어는 실제로 너무 유사하여 동일한 것으로 간주 될 수 있습니까? 라켓은 단지 Scheme의 확장입니다 (예 : Scheme 코드가 항상 실행됩니다.

나는 이것이 논쟁 거리가 아니며 단지 Scheme 프로그래밍 언어를 공부하는 누군가의 질문이라는 사실에 밑줄을 긋고 싶다.

+0

@Lord Torgamus : 정말로 편집 해 주셔서 감사합니다 :) 어떻게 말하고 싶은가요? – Aslan986

+2

[Racket이 스키마와 다른 점은 무엇입니까?] (0120-13753) –

답변

14

라켓은 Scheme과 매우 유사하며 실제로 2 년 전만하더라도 PLT Scheme이라고 불렀습니다.

그러나 Racket에서 사용되는 기본 언어는 몇 군데에서 Scheme과 다릅니다 (특히 불변 쌍이 있음). 이것은 새로운 것이 아닙니다. PLT Scheme이라고 불리우면 비슷한 차이가있었습니다. Scheme 표준은 너무 작아서 정의한 언어가 실용적이지 않습니다. 즉 모두 Scheme 구현은 자체 확장을 추가합니다. Racket의 또 다른 중요한 점은 새로운 방언을 정의하는 것이 매우 쉽다는 것입니다. Racket은 엄격한 R5RS 방언 (매우 유용하지 않다는 엄격한 의미)을 구현하고 R6RS 방언을 구현합니다.

+0

또한 Scheme의 본질은 구문 확장 매크로와 모든 점을 제외하면 "언어 확장"과 "추가 편의 라이브러리"의 차이가 매우 희미하다는 것을 의미합니다. – user54609

6

아니요, 일치하지 않습니다. 그러나 Racket 구현은 표준 Scheme 코드를 실행할 수 있습니다. 체계는 표준에 의해 정의됩니다. 라켓은 그렇지 않습니다. 이식성을 원하면 R6RS 코드를 작성하고 Racket을 사용하여 실행할 수 있습니다.

라켓은 Scheme의 상위 집합이나 하위 집합이 아닙니다.

+1

"Interpreter"는 여러 수준에서 위조되었습니다. –

+1

@ ElBarzilay 어떤 단어를 보시겠습니까? –

+3

라켓은 컴파일러입니다. Racket 코드를 바이트 코드로 컴파일 한 다음 바이트 코드를 JIT 컴파일러로 컴퓨터 코드로 컴파일합니다. 그러나 "통역사"와 "컴파일러"의 구분은 요즘에는별로 의미가없는 것입니다. –

관련 문제