씨골
CGOL| 패러다임 | 절차적, 명령적, 구조적 |
|---|---|
| 설계자 | 본 프랫 |
| 첫 등장 | 1973 |
| 영향을 받은 | |
| 알골, 포트란, MLisp | |
CGOL[1][2]("goll 참조")은 Lisp 프로그래밍 언어의 확장 가능한 대수 표기법을 특징으로 하는 대체 구문이다.Vaughan Pratt에 의해 MACLISP용으로 설계되었으며 이후 Common Lisp에 포팅되었다.[3]
CGOL의 표기법은 리스페의 전통적인 균일 부모형 접두사 표기법 구문이 아닌 ALGOL의 스타일로 전통적인 infix 표기법이다.CGOL 파서는 하향식 연산자 우선 순위 파싱에 대한 Pratt의 설계에 기초하며,[4][5] 때로는 비공식적으로 "Pratt 파서"라고 부르기도 한다.
의미론적으로, CGOL은 기본적으로 단지 Common Lisp일 뿐이며, 일부 추가 리더와 프린터 지원이 있다.
CGOL은 이전의 LISP 2 프로젝트 이면에 있는 몇 가지 필수적인 아이디어의 화신으로 간주될 수 있다.Lisp 2는 ALGOL 구문 제공을 목표로 한 LISP 1.5의 후속 제품이었다.LISP 2는 폐기되었지만, 오늘날에는 CGOL 코드베이스를 사용할 수 있다.CGOL은 LISP 2와 달리 Lisp로 작성된 휴대용 기능과 매크로로 구현돼 호스트 Lisp 구현에 수정이 필요 없기 때문이다.
구문
일반적으로 사용되는 많은 Common Lisp 작업에 대해 특별한 공지를 사용할 수 있다.예를 들어, 다음과 같이 행렬 곱하기 루틴을 작성할 수 있다.
i in 1 ~ n do에서 k에 대해 1 ~ n do(ac := 0; j in 1 ~ n do := ac + a(i,j)*b(j,k), c(i,k) := ac)
CGOL은 인픽스를 가지고 있다..작동(Common Lisp's(Common Lispcons기능) 및 인픽스@작동(Common Lisp's(Common Lispappend함수:
a.(b@c) = (a.b)@c
위의 예는 네이티브 공통 리스의 이 텍스트에 해당된다.
(이퀄 (단점 A (부록 B C)) (부록 (단점 A B) C)) CGOL 사용of속성을 읽고 설정하려면:
x의 '아버지' := y의 친척 '오빠'
위의 예는 네이티브 공통 리스의 이 텍스트에 해당된다.
(퍼트프로프 X (얻다 (얻다 Y 상대적) '형제') '아버지') 이는 CGOL이 어떻게 두 가지 인수의 함수를 공증하는지 보여준다.
\x,y; 1/sqrt(x**2 + y*2)
위의 예는 네이티브 공통 리스의 이 텍스트에 해당된다.
(람다 (X Y) (지수 1 (SQRT (플러스 (EXPT X 2) (EXPT Y 2))))) CGOL의 구문은 데이터 중심이기 때문에 수정 가능하고 확장 가능하다.
상태 및 소스 코드
CGOL은 무장 곰인형 Lisp를 연구하는 것으로 알려져 있다.[6]
CGOL 소스 코드와 이에 대한 논의를 담은 텍스트 파일 몇 개는 카네기-멜론 대학의 인공지능 리포지토리에서 프리웨어로 이용할 수 있다.[3]
참조
- ^ Pratt, Vaughan R. CGOL: LISP 사용자를 위한 대체 외부 표현.AI 작업 용지 121. MIT 인공지능 연구소(Cambridge, MA). 1976.
- ^ Pratt, Vaughan R. CGOL - MACLISP 사용자를 위한 대수 표기법.1977년 1월 27일.
- ^ a b CGOL: 공통 리스로 컴파일된 알골과 같은 언어
- ^ 프랫, 본 R하향식 연산자 우선 순위.프로그래밍 언어의 원리에 관한 ACM 심포지엄의 진행.1973. 페이지41-51.
- ^ 반 데 밴터, 마이클 L. CGOL 언어 시스템의 공식화 및 정확성 증명서(마스터즈 논문)MIT 컴퓨터 과학 기술 보고서 MIT-LCS-TR-147 (Cambridge, MA). 1975.
- ^ 무장곰 Common Lisp 구현 블로그 ABCL 개발 CGOL
