맨위로가기

치킨 (스킴 구현체)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

치킨은 "실용적이고 이식 가능한 Scheme 시스템"을 목표로 하는 Scheme 프로그래밍 언어의 구현체이다. 다양한 운영 체제 및 임베디드 시스템에서 Scheme 코드를 컴파일할 수 있도록 C 언어를 중간 언어로 사용하며, C의 콜 스택을 Scheme의 힙으로 활용하는 방식을 통해 성능을 향상시킨다. R5RS 표준을 준수하며, 외부 함수 인터페이스, 크로스 컴파일, 모듈 및 매크로, 원격 디버거, 제한적인 정적 타입 분석 등의 기능을 제공한다. 추가 라이브러리는 'egg'라는 소프트웨어 저장소를 통해 제공되며, 펠릭스 빈켈만에 의해 개발되었다.

더 읽어볼만한 페이지

  • 자유 컴파일러와 인터프리터 - Tcl
    Tcl은 존 오스터하우트가 개발한 명령어 기반의 프로그래밍 언어로, Tk 툴킷과 결합하여 GUI 스크립팅 환경으로 발전했으며, 다양한 운영체제에서 사용 가능하고 C, C++, Java 등 다른 언어와의 인터페이스를 지원한다.
  • 자유 컴파일러와 인터프리터 - PHP
    PHP는 라스무스 러도프가 개발한 범용 스크립팅 언어로, 웹 개발에 널리 사용되며 LAMP 아키텍처의 핵심 요소이다.
  • BSD 라이선스 소프트웨어 - V8 (자바스크립트 엔진)
    V8은 구글이 개발한 오픈 소스 자바스크립트 엔진으로, 자바스크립트 코드 실행 속도 향상을 위해 여러 컴파일러를 거쳐 크롬, 노드.js 등에서 활용된다.
  • BSD 라이선스 소프트웨어 - VP9
    VP9는 구글이 개발한 오픈 소스 비디오 코덱으로, VP8보다 압축 효율을 높이고 HEVC보다 나은 성능을 목표로 개발되었으며, WebM 형식으로 사용되고 주요 웹 브라우저와 넷플릭스, 유튜브 등에서 지원했으나 AV1의 등장으로 개발이 중단되었다.
  • 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 브루클린 미술관
    브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다.
  • 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 광주지방기상청
    광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.
치킨 (스킴 구현체) - [IT 관련 정보]에 관한 문서
일반 정보
이름치킨 스킴
종류프로그래밍 언어 구현체
패러다임다중 패러다임 프로그래밍: 함수형 프로그래밍, 명령형 프로그래밍, 메타프로그래밍
언어 계열리스프
설계자Felix Winkelmann
개발자치킨 팀
첫 출시일2000년 7월 20일
최신 안정화 버전5.4.0
최신 안정화 버전 출시일2024년 7월 16일
타이핑동적 타이핑, 레이턴트 타이핑, 강한 타이핑
스코프어휘적 스코프
구현 언어스킴, C
지원 플랫폼IA-32, x86-64, ARM, MIPS, SPARC64, PowerPC
지원 운영 체제크로스 플랫폼: 윈도우, 리눅스, macOS, FreeBSD, NetBSD, OpenBSD, 솔라리스, AIX, 하이쿠, 안드로이드, iOS
라이선스BSD
파일 확장자.scm
웹사이트공식 웹사이트
영향을 받은 언어리스프, 스킴

2. 특징

치킨(Scheme 구현체)의 목표는 "''실용적이고 이식 가능한 Scheme 시스템''"이라는 슬로건에 잘 나타나 있다.[3][25] 이는 실제 소프트웨어 개발에 Scheme을 적용하는 실용성과 다양한 환경에서의 이식성 확보를 핵심 목표로 삼는다.

Scheme은 주로 컴퓨터 과학 교육이나 프로그래밍 언어 실험에 사용되었지만, 치킨은 이를 넘어 비즈니스나 산업 현장에서 실제로 사용할 수 있는 도구를 지향한다.[3][25] 이를 위해 방대한 라이브러리 생태계를 구축하고 있다.[4][26] 또한, Scheme 코드를 이식 가능한 C 코드로 컴파일하는 방식을 채택하여 리눅스, macOS, 윈도우 등 다양한 운영 체제와 임베디드 시스템 환경에서의 이식성을 확보했다.[5][6][27][28]

2. 1. 실용성

치킨(Chicken)의 초점은 "''실용적이고 이식 가능한 Scheme 시스템''"이라는 슬로건에서 잘 드러난다.[3]

치킨의 주요 목표는 실제 소프트웨어 작성을 위한 Scheme의 실용적인 응용이다. Scheme은 컴퓨터 과학 교육 과정이나 프로그래밍 언어 실험에 주로 사용되어 왔지만, 비즈니스나 산업 분야에서는 활용도가 낮았다.[3][25] 치킨 커뮤니티는 다양한 작업을 수행할 수 있는 방대한 라이브러리(eggs)를 제작했다. 치킨 위키(위키를 구동하는 소프트웨어 자체도 치킨으로 작성되었다)에는 치킨을 사용하여 만들어진 소프트웨어 목록이 있다.[4][26]

또 다른 중요한 목표는 이식성이다. 치킨은 Scheme 코드를 중간 표현인 이식 가능한 C 코드로 컴파일한다. 이는 Gambit이나 Bigloo와 유사한 방식이다. 이를 통해 치킨으로 작성된 프로그램은 리눅스, macOS, 기타 유닉스 계열 시스템, Windows, Haiku와 같은 일반적인 운영 체제뿐만 아니라, 모바일 플랫폼인 iOS 및 Android에서도 컴파일될 수 있다.[5][27] 또한, 크로스 컴파일 기능을 내장하고 있어 다양한 임베디드 시스템 플랫폼에서도 사용할 수 있다.[6][28]

2. 2. 이식성

치킨의 주요 목표 중 하나는 이식성이다. 이는 Gambit이나 Bigloo와 유사하게, Scheme 코드를 이식 가능한 C 언어 소스로 변환하는 방식으로 달성된다. 이렇게 생성된 C 코드는 다양한 운영 체제에서 컴파일될 수 있다.

치킨으로 작성된 프로그램은 리눅스, macOS, 기타 유닉스 계열 시스템, 윈도우, Haiku와 같은 데스크톱 운영 체제뿐만 아니라, 모바일 플랫폼인 iOS 및 Android에서도 실행될 수 있다.[5][27] 또한, 크로스 컴파일을 위한 내장 지원을 제공하여[6][28], 다양한 임베디드 시스템 환경에서도 활용될 수 있다.

3. 설계

치킨(Chicken)은 많은 스킴 컴파일러와 마찬가지로, 표준 C를 중간 언어로 사용하는 방식을 채택하고 있다. 스킴 프로그램은 먼저 치킨 컴파일러에 의해 C 코드로 번역된 다음, 대상 시스템의 C 컴파일러를 통해 실행 가능한 기계어 코드로 변환된다. C 언어는 대부분의 운영체제CPU 아키텍처에서 지원되므로, 이러한 접근 방식은 프로그램의 이식성을 확보하는 데 유리하다.

치킨의 핵심적인 설계는 1994년 헨리 베이커가 발표한 논문[7][29]에서 제시된 혁신적인 아이디어에 크게 기반한다. 이 논문은 스킴을 C로 컴파일하는 새로운 전략을 제안했는데, 주요 특징으로는 계속 전달 방식(Continuation-Passing Style, CPS)의 활용과 C의 호출 스택을 스킴 객체를 위한 힙 메모리의 일부, 특히 '보육(nursery)' 공간으로 사용하는 점을 들 수 있다. C 스택이 가득 차면 체니 알고리즘에 기반한 복사 방식 가비지 컬렉션[8][30]을 통해 메모리를 효율적으로 관리한다.

이러한 설계 방식은 C 스택의 빠른 속도를 활용하여 성능을 개선하고, 스킴의 강력한 기능인 계속을 C 함수 호출 방식으로 간단하게 구현하며, 스킴 표준에서 요구하는 꼬리 재귀 최적화를 점근적으로 보장하는 것을 목표로 한다.

3. 1. 작동 원리

많은 스킴 컴파일러와 마찬가지로, 치킨(Chicken)은 표준 C를 중간 언어로 사용한다. 스킴 프로그램은 치킨 컴파일러를 통해 C 코드로 번역되고, 이후 C 컴파일러가 이 코드를 대상 컴퓨터 아키텍처의 기계어로 컴파일하여 실행 파일을 만든다. C 언어는 다양한 운영체제와 CPU 아키텍처에서 지원되므로 이식성을 확보하는 데 유리하다.

치킨의 설계는 1994년 헨리 베이커가 발표한 논문[7][29]에서 제시된, 스킴을 C로 컴파일하는 새로운 방식에 영향을 받았다. 스킴 프로그램은 C 서브루틴(함수)으로 컴파일된다. 이 C 함수들은 일반적인 방식처럼 값을 반환하기 위해 return 명령문을 사용하지 않는다. 대신, 함수의 실행이 끝나면 새로운 계속(continuation)을 호출한다. 이 계속들은 C 함수 형태로 표현되며, 다른 C 함수를 호출할 때 추가 인수로 전달된다. 어떤 계속을 사용할지는 컴파일러가 결정한다. 이러한 방식은 계속 전달 방식(Continuation-Passing Style, CPS)의 핵심 원리이다.

베이커의 핵심 아이디어는 C의 호출 스택을 스킴 객체를 저장하는 힙의 일부로 활용하는 것이었다. 이를 통해 자동 변수 생성이나 고정 크기 배열 할당과 같은 일반적인 C 스택 연산을 스킴 객체 관리에 이용할 수 있다. C 스택 공간이 가득 차면 가비지 수집이 시작된다. 이때 사용되는 가비지 수집기는 체니 알고리즘에 기반한 복사 방식 가비지 컬렉션[8][30]으로, 살아있는 모든 계속과 객체들을 다른 힙 공간으로 복사한다. 이 과정에서 C 컴파일러 구현에 의존적인 C 스택 프레임 자체는 복사하지 않고 스킴 객체만 복사한다.

결과적으로 스킴이 사용하는 전체 힙 공간은, 새로운 객체가 처음 할당되는 C 스택(보육 영역 역할)과 가비지 수집 시 객체가 이동되는 두 개의 추가 힙 영역으로 구성되어 세대별 가비지 수집 방식을 따른다. 이 접근 방식은 많은 연산에서 C 스택의 빠른 속도를 활용하게 해주며, 계속을 C 함수를 호출하는 간단한 방식으로 구현할 수 있게 한다. 또한 이 방식은 스킴 표준에서 요구하는 꼬리 재귀 최적화를 점근적으로 보장하며, 치킨 스킴 컴파일러는 공간 안전성(space safety영어)도 점근적으로 만족시킨다고 알려져 있다.

3. 2. C 스택 활용

치킨(Chicken)의 설계는 1994년 헨리 베이커(Henry Baker)가 발표한 논문[7][29]에서 제시된 아이디어에 기반한다. 베이커의 핵심 아이디어는 C의 호출 스택을 스킴의 힙의 일부, 특히 새로운 객체를 위한 '보육(nursery)' 공간으로 활용하는 것이다. 이 방식을 통해 자동 변수 생성이나 가변 크기 배열 할당과 같은 일반적인 C 스택 연산을 그대로 사용할 수 있다는 장점이 있다.

C 스택이 가득 차면(즉, 스택 포인터가 스택 상단에 도달하면) 가비지 수집 과정이 시작된다. 이때 사용되는 방식은 C. J. 체니(C. J. Cheney)가 고안한 체니 알고리즘 기반의 복사 가비지 수집기이다.[8][30] 이 과정에서 현재 활성화된 계속과 다른 필요한 객체들은 실제 힙 영역으로 복사된다. 중요한 점은 이 과정에서 C 스택 프레임 자체는 복사하지 않고 스킴 객체만 복사하므로, 특정 C 컴파일러 구현에 대한 지식이 필요하지 않다는 것이다.

결과적으로 스킴이 사용하는 전체 힙은 '보육' 공간 역할을 하는 C 스택과, 가비지 컬렉터가 객체를 옮기는 두 개의 힙 공간으로 구성되며, 이는 세대별 가비지 수집 방식을 형성한다. 이 접근법은 많은 연산에서 C 스택의 빠른 속도를 활용할 수 있게 해주며, 계속을 단순한 C 함수 호출처럼 사용할 수 있게 한다.

3. 3. 성능

많은 스킴 컴파일러처럼, 치킨(Chicken)은 표준 C를 중간 표현으로 사용한다. 스킴 프로그램은 먼저 치킨 컴파일러에 의해 C 코드로 번역되고, 이후 C 컴파일러가 이 C 코드를 대상 컴퓨터 아키텍처의 기계어로 번역하여 실행 가능한 프로그램을 만든다. C 언어는 대부분의 운영체제와 CPU 아키텍처에서 지원되므로, 이러한 방식은 프로그램의 이식성을 높이는 데 유리하다.

치킨의 설계는 1994년 헨리 베이커(Henry Baker)가 발표한 논문[7]에서 제시된 혁신적인 아이디어에 기반한다. 이 방식에서는 스킴 프로그램을 C 서브루틴(함수)으로 컴파일한다. 특징은 이 C 함수들이 일반적인 `return` 명령문을 사용하지 않는다는 것이다. 대신, 함수의 작업이 끝나면 다음 실행 지점을 나타내는 새로운 계속(continuation)을 호출한다. 이 '계속'은 또 다른 C 함수이며, 컴파일러에 의해 계산되어 다른 C 함수에 인수로 전달된다. 이러한 방식이 계속 전달 방식(Continuation-Passing Style, CPS)의 핵심 원리이다.

베이커의 핵심 아이디어는 C 호출 스택을 스킴의 힙(heap) 메모리 영역 중 '보육(nursery) 공간'으로 활용하는 것이었다. 이를 통해 자동 변수 생성이나 가변 크기 배열 할당 같은 일반적인 C 스택 연산을 그대로 사용할 수 있게 된다. C 스택 공간이 가득 차면 가비지 수집이 시작된다. 이때 사용되는 가비지 수집기는 체니 알고리즘에 기반한 복사 방식 가비지 컬렉션으로, 활성 상태인 모든 계속과 객체들을 힙의 다른 공간으로 복사한다.[8] 중요한 점은 이 과정에서 C 스택 프레임 자체는 복사하지 않고 스킴 객체만 다루므로, 특정 C 구현 방식에 얽매이지 않는다는 것이다.

결과적으로 스킴 힙은 C 스택(보육 공간)과 두 개의 추가 힙 공간으로 구성되어 세대별 가비지 수집을 수행한다. 이 접근 방식은 여러 장점이 있다. 첫째, 많은 메모리 관련 연산에서 빠른 C 스택의 속도를 활용할 수 있다. 둘째, 스킴의 강력한 기능인 계속을 C 함수의 단순한 호출로 효율적으로 구현할 수 있다. 마지막으로, 스킴 표준에서 요구하는 점근적 꼬리 재귀 최적화를 보장하여 프로그램이 불필요하게 메모리를 소비하는 것을 막는다. 치킨 스킴 컴파일러의 구현은 점근적으로 "공간에 안전하다"(space-safe)고 평가받는다.

4. 표준과의 차이점 및 제한 사항

치킨 스킴은 대부분 R5RS 표준을 따르지만, 몇 가지 주목할 만한 제한 사항과 차이점이 있다.[9] R7RS 표준과의 호환성은 별도의 확장 라이브러리를 통해 제공된다.[2]

핵심 시스템 자체는 UTF-8 문자를 기본적으로 지원한다. 하지만 문자열을 인덱싱하거나 조작하는 절차에서는 UTF-8을 인식하지 못한다. 완전한 UTF-8 지원이 필요하다면, 이를 위한 확장 라이브러리를 사용해야 한다.[10]

또한, 현재 버전에서는 함수를 호출할 때 전달할 수 있는 인수의 개수가 최대 120개로 제한되어 있다. 이는 다른 스킴 처리계에서 일반적으로 지원하는 2048개에 비해 적은 수치이다.

5. 확장 소프트웨어 (애드온)

치킨은 '''egg'''라고 불리는 추가 라이브러리 및 프로그램의 소프트웨어 저장소를 제공한다.[11] 이를 통해 사용자는 다양한 확장 기능을 쉽게 설치하고 사용할 수 있다. egg 시스템의 구체적인 작동 방식과 특징에 대한 자세한 내용은 하위 섹션에서 다룬다.

5. 1. Egg 시스템

치킨은 '''egg'''라고 불리는 추가 라이브러리 및 프로그램의 큰 소프트웨어 저장소를 가지고 있다.[11] (eggs 목록 참조) 이 시스템은 RubyGems와 매우 유사하며,[12] 운영 체제 패키징 시스템과는 독립적으로 작동한다.

초기에 egg들은 하나의 중앙 svn 저장소에서 개발되었다.[13] 개발자가 태그를 생성하면, 해당 확장 기능의 새 버전이 자동으로 사용자에게 다운로드 가능하게 되는 방식이었다. 현재는 대부분의 인기 있는 코드 호스팅 사이트를 이용하면서 '반자동' 릴리스 관리를 유지하고 있으며, egg는 어떤 버전 관리 시스템(VCS)에서도 개발될 수 있다.[14] 이 릴리스 방식은 사용자가 특정 VCS를 설치할 필요가 없다는 점에서 VCS에 독립적이다. 개발자는 원하는 곳 어디에서든 코드를 호스팅할 수 있으며, 공개 버전 관리를 사용하지 않고 일반적인 tarball 형태로만 배포하는 것도 가능하다.

릴리스된 모든 egg의 최신 버전은 지속적 통합 프로세스를 통해 자동으로 테스트된다. 핵심 시스템과 모든 egg가 최신 개발 버전(이전 버전과의 호환성 문제나 새로운 버그를 찾기 위해) 및 최신 안정 버전(안정적인 시스템 사용자들을 위해 모든 기능이 제대로 작동하는지 확인하기 위해)에 대해 매일 테스트되는 표준 테스트 서버가 존재한다.[15] 또한, 누구나 자신의 하드웨어나 다른 운영 체제, 또는 다른 핵심 릴리스 환경에서 추가적인 테스트를 수행하며 기여할 수 있다.

SWIG 역시 치킨을 지원한다.

6. 기능

치킨은 R5RS 표준 Scheme의 대부분을 지원한다. 또한 모든 Scheme 구현체에서 사용할 수 없는 몇 가지 비표준 기능도 추가로 제공한다.

6. 1. 외부 함수 인터페이스 (FFI)

치킨은 C로 컴파일되기 때문에, 컴파일된 결과물에 사용자가 직접 작성한 C 코드를 삽입하여 C 라이브러리와 쉽게 통합할 수 있다. 치킨의 외부 함수 인터페이스(FFI)는 대부분의 기본 C 데이터 타입과 이에 해당하는 Scheme 객체 사이의 변환 기능을 제공한다.

또한, 파이썬,[16] Lua,[17] 자바와 같은 다른 프로그래밍 언어와 연동하기 위한 확장 라이브러리도 존재한다. 자바의 경우 자바 네이티브 인터페이스(JNI)[18]나 브리지[19] 방식을 사용한다.

6. 2. 크로스 컴파일

Scheme 코드를 다른 플랫폼(예: 장치에서의 임베디드 사용)으로 크로스 컴파일하는 것은 비교적 쉽다.

Scheme 코드의 크로스 컴파일을 가능하게 하기 위해, 치킨(Chicken)은 분리 컴파일 모델을 적용한다. 컴파일된 모듈은 두 개의 공유 라이브러리로 구성된다. 한 라이브러리는 런타임에 사용될 실제 코드(대상 플랫폼용으로 컴파일됨)를 포함하고, 다른 라이브러리는 절차 매크로 코드와 같이 컴파일 시간에 실행되는 코드(호스트 플랫폼에서)를 로드하는 데 사용되는 import 모듈이다.

치킨 컴파일러 자체도 쉽게 크로스 컴파일할 수 있다. C로 변환된 후, 다른 플랫폼을 위해 빌드하도록 설정된 C 컴파일러를 사용하면 된다.

6. 3. 모듈 및 매크로

버전 4부터 치킨은 내장된 모듈 시스템과 명시적 이름 변경 매크로를 통한 낮은 수준의 위생 매크로 지원을 제공한다[20]. 버전 4 이전에는 추가 라이브러리를 통해 제공되었다. 표준 구문 규칙(syntax-rules) 매크로도 지원하며, 기본적으로 명시적 이름 변경의 버전인 암시적 이름 변경 매크로도 지원한다[21].

이 메커니즘은 편의성을 위해 성능을 희생한다. 비위생적인 것으로 명시적으로 주입되지 않은 각 식별자는 이름 캡처(name capture)를 방지하기 위해 자동으로 이름이 변경된다. 성능 비용은 암시적 이름 변경 방식이 매크로 확장기가 식을 두 번 더 재순회해야 하기 때문에 발생한다. 이 비용은 확장 시간에 지불되므로, 매크로 작성자는 더 긴 컴파일 시간이 허용 가능한지 고려해야 한다.

6. 4. 원격 디버거

치킨은 4.11 버전부터 Feathers라는 원격 디버거를 제공한다.[22] 디버깅 옵션을 사용하여 스킴 코드를 컴파일하면, 코드의 특정 지점에 디버깅 이벤트가 삽입된다. 이 이벤트는 C 함수 호출로 구현되며, 실제 디버깅을 하지 않을 때는 비교적 적은 부하를 발생시킨다.

디버깅을 할 때는 Feathers 서버 프로세스에 TCP 연결을 시도하는데, 이 서버는 다른 컴퓨터에서 실행될 수도 있다. 연결되면 디버깅 대상 프로세스는 일시 중단되며, 사용자는 중단점을 설정하고 프로그램을 시작할 수 있다. 프로그램 실행 중 설정된 중단점에 도달하면, 클라이언트(디버깅 중인 프로세스)는 명령 루프 상태가 되어 사용자가 프로세스 상태를 조사하고 변수 값을 확인하거나 변경할 수 있게 된다.

6. 5. 제한적인 정적 타입 분석

치킨은 지역 흐름 분석을 지원한다. 이를 통해 컴파일러는 컴파일 시간에 변수 타입 오류를 포착하고 타입 특수화를 수행할 수 있다. 이러한 특수화를 통해 컴파일 시간에 타입을 추론할 수 있을 때 런타임에 타입 감지에 대한 여러 안전 검사를 제거할 수 있으며, 이는 런타임 성능 향상으로 이어진다.

이 분석 기능은 모듈 간 흐름 분석은 지원하지 않으므로, 하나의 컴파일 단위(모듈) 내의 코드 최적화에만 사용할 수 있다.

7. 역사

CHICKEN Scheme은 원래 Cygwin/gcc 환경에서 펠릭스 빈켈만이 개발했으며, 이후 Windows 98 환경에서 Visual C++ 5.0으로 개발되었다.[1] 그는 "그날 머리에 떠오른 첫 번째 것"으로 CHICKEN이라는 이름을 즉흥적으로 지었는데, 책상에 놓여 있던 깃털 맥그로우 플라스틱 장난감을 떠올렸기 때문이다. 프로젝트가 성숙해짐에 따라, 그는 미신 때문에 이름을 바꾸지 않기로 결정했다.[23]

참조

[1] 웹사이트 Announcing the Chicken Scheme-to-C compiler https://groups.googl[...]
[2] 웹사이트 r7rs (Chicken manual) https://wiki.call-cc[...] 2019-02-28
[3] 웹사이트 Scheme FAQ http://community.sch[...]
[4] 웹사이트 Software written in Chicken Scheme https://wiki.call-cc[...] 2019-02-26
[5] 웹사이트 Portability https://wiki.call-cc[...]
[6] 웹사이트 Cross development https://wiki.call-cc[...] 2019-02-26
[7] 웹사이트 CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A. http://home.pipeline[...] 1994
[8] 간행물 A Nonrecursive List Compacting Algorithm CACM 1970-11
[9] 웹사이트 Confirmed deviations (Chicken manual) https://wiki.call-cc[...] 2019-02-28
[10] 웹사이트 utf8 (Chicken manual) https://wiki.call-cc[...] 2019-02-28
[11] 웹사이트 Chicken eggs https://eggs.call-cc[...]
[12] 웹사이트 RubyGems https://rubygems.org[...] 2019-02-26
[13] 웹사이트 VCS-independent distribution of language extensions https://www.more-mag[...]
[14] 웹사이트 Instructions for popular code hosting methods and VCSes https://wiki.call-cc[...]
[15] 웹사이트 Chicken automated tests https://tests.call-c[...] 2019-02-28
[16] 웹사이트 pyffi https://wiki.call-cc[...] 2019-03-03
[17] 웹사이트 Lua https://wiki.call-cc[...] 2019-03-03
[18] 웹사이트 JNI https://wiki.call-cc[...] 2019-03-03
[19] 웹사이트 Javahack https://wiki.call-cc[...] 2019-03-03
[20] 웹사이트 Module (Chicken syntax) https://wiki.call-cc[...] 2019-02-28
[21] 웹사이트 Module (Chicken syntax) https://wiki.call-cc[...] 2019-02-28
[22] 웹사이트 Debugging https://wiki.call-cc[...] 2018-11-25
[23] 웹사이트 Behind the Scenes with CHICKEN Scheme and SPOCK (Part 2) https://spin.atomico[...] 2023-02-17
[24] 웹사이트 'Announcing the CHICKEN Scheme-to-C compiler' https://groups.googl[...] 2011-06-27
[25] 웹사이트 Scheme FAQ http://community.sch[...] 2011-11-26
[26] 웹사이트 "Chickenでかかれたソフトウェアの一覧 http://wiki.call-cc.[...] 2011-06-27
[27] 웹사이트 サポートされているプラットフォームの一覧 http://wiki.call-cc.[...] 2011-06-07
[28] 웹사이트 'Cross development' http://wiki.call-cc.[...] 2011-06-07
[29] 웹사이트 'CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.' http://home.pipeline[...] 2011-11-26
[30] 간행물 A Nonrecursive List Compacting Algorithm CACM 1970-11
[31] 웹인용 Announcing the Chicken Scheme-to-C compiler https://groups.googl[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com