EuLisp
EuLisp![]() | |
패러다임 | 멀티패키지: 기능성, 프로시저, 메타, 객체 지향 |
---|---|
가족 | 리스프 |
처음 등장한 | 전( |
프리뷰 릴리즈 | 2010년 0.991년[1], 전( |
타이핑 분야 | 강하고 역동적인 |
OS | 리눅스 |
파일 이름 확장자 | .ems |
주요 구현 | |
EuXlisp,[2] You too,[2] Eu2C[2] | |
영향을 받다 | |
공통 리스프, InterLisp, LeLisp, Lisp/VM, 스킴, T, CLOS, ObjVlisp, Oaklisp, MicroCeyx, MCS, Standard ML, Haskell | |
영향받은 | |
딜런, ISLISP, Evelin |
EuLisp는 정적이고 역동적인 범위의 Lisp 방언으로 유럽 각지에서 온 산업 및 학술적인 Lisp 사용자와 개발자들의 느슨한 구성에 의해 개발되었습니다.표준화자는 "과거로 인한 부담을 덜 받는" 새로운 리스프를 만들려는 의도였고, 스킴처럼 미니멀리즘적이지는 않았다.또 다른 목표는 객체 지향 프로그래밍 패러다임을 잘 통합하는 것이었습니다.그것은 3세대 프로그래밍 언어이다.
기원.
언어 정의 과정은 1985년 파리에서 열린 회의에서 처음 시작되었고 몇 년이 걸렸다.완전한 사양과 최초의 실장(인터프리터 전용)은 1990년에 제공되었습니다.
1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LISP 1, 1.5, LISP 2(abandoned) | ||||||||||||||
마클리스프 | ||||||||||||||
인터리스크 | ||||||||||||||
MDL | ||||||||||||||
리스프 기계 리스프 | ||||||||||||||
스킴 | R5RS | R6RS | R7RS 소형 | |||||||||||
없음 | ||||||||||||||
ZIL(Zork 구현 언어) | ||||||||||||||
프란츠 리스프 | ||||||||||||||
일반적인 리스프 | ||||||||||||||
르 리스프 | ||||||||||||||
MIT 스킴 | ||||||||||||||
T | ||||||||||||||
체즈 스킴 | ||||||||||||||
Emacs 리스프 | ||||||||||||||
자동 LISP | ||||||||||||||
피코리스프 | ||||||||||||||
EuLisp | ||||||||||||||
ISLISP | ||||||||||||||
오픈리스프 | ||||||||||||||
PLT 방식 | 라켓 | |||||||||||||
GNU Guile | ||||||||||||||
비주얼 LISP | ||||||||||||||
클로쥬르 | ||||||||||||||
호 | ||||||||||||||
LFE | ||||||||||||||
하이 |
특징의 구별
주요 특징은 Lisp-1(별도의 함수와 가변 네임스페이스 없음)이며, EuLisp Object System(TELOS)이라는 이름의 공통 Lisp Object System(CLOS) 스타일의 범용 함수형 객체 지향 시스템을 처음부터 통합하고 있으며, 내장 모듈 시스템을 갖추고 있으며, Lisp의 소규모 사용을 촉진하기 위해 레이어로 정의되어 있다는 것입니다.하드웨어와 교육용 기계.Scheme만큼 강력하지는 않지만 계속을 지원합니다.심플한 경량 프로세스 메커니즘(스레드)을 갖추고 있습니다.
요약
- 레벨의 정의(현재 레벨 0 및 레벨 1)
- (일류 이외의) 어휘 환경에 기반한 모듈.
- Level-1에서 다이내믹 또는 레이트바인딩을 사용할 수 있는 사전 스코프.
- 함수 및 변수 이름을 위한 단일 이름 공간(Scheme 등).
- 경량 프로세스
- 레벨 0에서는 단일 상속을, 레벨 1에서는 다중 상속 및 메타 객체 프로토콜을 갖춘 완전히 통합된 객체 시스템.
- 객체 지향 조건 시스템.
실장
EuLisp의 초기 구현은 무료였고 결국 Eulisp(FEEL)가 되었습니다.FEEL의 후계자는 영국의 [3]배스 대학의 Youtoo(통역 및 컴파일 버전)였습니다.EuLisp의 기본 수준인 level-0의 통역자는 Russell Bradford가 XScheme에서 작성했다. 이는 원래 EuScheme EuScheme로 명명되었지만 혼란을 피하기 위해 최신 버전은 EuXlisp [1]로 명명되었다.또한 EuLisp 최적화 컴파일러인 Eu2C [2]는 Fraunhofer ISST에 의해 독일의 APPLY 프로젝트[3]에 의해 작성되었습니다.
EuLisp의 방언은 Multiple EuLisp라는 이름으로 개발되었다.병렬 컴퓨팅 프로그래밍 확장 기능을 갖춘 EuLisp였습니다.
예
알고리즘에서 클래스를 사용하여 "하노이 방향" 문제를 해결하는 예.
(디모듈 하노이 (구문 (구문 0) 수입품 (레벨 0) 수출. (하노이)) ;;;------------------------------------------------- ;;;; 타워 정의 ;;;------------------------------------------------- (탈상수 *최고치* 10) (디클래스 <blocks> () ((아이디 리더: 타워형 키워드: id:) (블록 악세사리: 타워 블록))) (삭제하다 빌드 인스톨 (x n) (라벨 ((고리 (i 인식하다) (한다면 (= i 0) 인식하다 (고리 (- i 1) (단점 i 인식하다))))) ((세터 타워 블록) x (고리 n ())) x)) (디프로덕트 범용 인쇄물 ((x <blocks>) (s <스트림>)) (포맷 s "#<block ~a: ~a>" (타워형 x) (타워 블록 x))) ;;;------------------------------------------------- ;;;; 주탑블록 접근 ;;;------------------------------------------------- (디제너릭 밀다 (x y)) (디프로덕트 밀다 ((x <blocks>) (y <fpi>)) (허락하다 ((블록 (타워 블록 x))) (한다면 (또는 (특수 절차입니까? 블록) (< > y (차 블록))) ((세터 타워 블록) x (단점 y 블록)) (에러 <조건> (fmt "탑 위의 ~a 크기의 ~a 크기의 ~a" 푸시 블록" y x))))) (디제너릭 팝 (x)) (디프로덕트 팝 ((x <blocks>)) (허락하다 ((블록 (타워 블록 x))) (한다면 블록 (예후 ((세터 타워 블록) x (CDR 블록)) (차 블록)) (에러 <조건> (fmt "빈 타워에서 팝 블록 제거 ~a" x))))) ;;;------------------------------------------------- ;;; x3을 버퍼로 하여 주탑x1에서 주탑x2로 n블럭 이동 ;;;------------------------------------------------- (디제너릭 움직이다 (n x1 x2 x3)) (디프로덕트 움직이다 ((n <fpi>) (x1 <blocks>) (x2 <blocks>) (x3 <blocks>)) (한다면 (= n 1) (예후 (밀다 x2 (팝 x1)) (인쇄물 x1 nl x2 nl x3 nl nl)) (예후 (움직이다 (- n 1) x1 x3 x2) (움직이다 1 x1 x2 x3) (움직이다 (- n 1) x3 x2 x1)))) ;;;------------------------------------------------- ;;; '하노이 타워' 초기화 및 실행 ;;;------------------------------------------------- (삭제하다 하노이 () (허락하다 ((x1 (만들다 <blocks> id: 0)) (x2 (만들다 <blocks> id: 1)) (x3 (만들다 <blocks> id: 2))) (빌드 인스톨 x1 *최고치*) (빌드 인스톨 x2 0) (빌드 인스톨 x3 0) (인쇄물 x1 nl x2 nl x3 nl nl) (움직이다 *최고치* x1 x2 x3))) (하노이) ;;;------------------------------------------------- ) ;; 모듈 하노이 종료 ;;;-------------------------------------------------
레퍼런스
- "EuLisp의 개요", 편집자인 줄리안 파젯, 그레그 누옌스, 해리 브레타우어.Lisp 및 Symbolic Computation, 제6권, No.1-2, 1993, 9-98페이지.
- "EuLisp Metaobject Protocol(EuLisp Metaobject Protocol)", 해리 브레타우어, 위르겐 캅, 할리 데이비스, 키스 플레이포드.리스프와 심볼릭 계산, 제6권, 제1-2호, 1993년 8월, 119-138페이지.
- "교육의 EuLisp", R. Bradford 및 D.C.드루르Lisp 및 Symbolic Computation, Volume 6, No.1-2, 99-118 페이지.
- "Telos의 응용 프로그램", Peter Broadberry, Christopher Burdorf.리스프와 심볼릭 계산, 제6권, 제1-2호, 1993년 8월, 139-158페이지.
- "EuLisp를 위한 유형 추론의 실용적인 접근", Andreas Kind와 Horst Friedrich.리스프와 심볼릭 계산, 제6권, 제1-2호, 1993년 8월, 159-176페이지.
- "EuLisp Threads: A Concurrency Toolbox", 닐 베링턴, 피터 브로드베리, 데이비드 드루어, 줄리안 파젯.리스프와 심볼릭 계산, 제6권, 제1-2호, 1993년 8월, 177-200페이지.
- "Pulal EuLisp: 원시 심볼릭 데이터 병렬 모델", Simon Merrall, Julian Padget.리스프와 심볼릭 계산, 제6권, 제1-2호, 1993년 8월, 201-219페이지.
- "EuLisp to ASM/C 컴파일러용 보수적 가비지 컬렉터", E. Ulrich Kriegel.OPSLA'93 가비지 수집 및 메모리 관리에 관한 워크숍, 1993년 9월 27일 워싱턴 DC.
- "공통 리스프에서의 텔로스의 구현", 객체 지향 시스템, vol. 3, 페이지 31-49, 1996.ISSN 0969-9767