EuLisp

EuLisp
EuLisp
EuLispLogo.png
패러다임멀티패키지: 기능성, 프로시저, 메타, 객체 지향
가족리스프
처음 등장한1990년; 32년 전(1990년)
프리뷰 릴리즈
2010년 0.991년[1], 12년 전(2010년)
타이핑 분야강하고 역동적인
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만큼 강력하지는 않지만 계속을 지원합니다.심플한 경량 프로세스 메커니즘(스레드)을 갖추고 있습니다.

요약

실장

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)))  (하노이)  ;;;------------------------------------------------- )  ;; 모듈 하노이 종료 ;;;------------------------------------------------- 

레퍼런스

  1. ^ "Eulisp" (PDF). GitHub.
  2. ^ a b c "Eulisp". GitHub.
  3. ^ Kind, Andreas. "Youtoo". School of Mathematical Sciences. University of Bath. England. Retrieved 2018-10-28.

외부 링크