맨위로가기

Rebol

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

1. 개요

레볼(Rebol)은 칼 사센라스가 20년간의 연구 끝에 1997년 출시한 프로그래밍 언어이다. Lisp, Forth, Logo, Self의 개념을 활용하여 설계되었으며, 1998년 REBOL Technologies가 설립되었다. 2008년 Rebol 3의 알파 버전이 출시되었고, 2012년 Apache 2 라이선스로 오픈 소스화되어 커뮤니티 주도로 개발되고 있다. Rebol은 "단순한 일은 단순하게 처리한다"는 설계 원칙을 가지며, 방언(dialect)이라는 마이크로 언어를 지원하여 특정 목적에 최적화된 코드를 작성할 수 있다. Rebol의 구문은 자유 형식이며, 표현식 기반으로 설계되어 있으며, 다양한 데이터 타입과 연산자를 제공한다. Rebol은 JSON, Orca, Boron, Red와 같은 언어에 영향을 미쳤다.

더 읽어볼만한 페이지

  • 프로토타입 기반 프로그래밍 언어 - 루아 (프로그래밍 언어)
    루아는 C 언어와의 통합이 용이하고 작고 가벼운 확장 가능한 스크립트 언어로, 테이블 기반의 자료 구조를 통해 다양한 프로그래밍 패러다임을 지원하며 여러 분야에서 활용된다.
  • 프로토타입 기반 프로그래밍 언어 - LPC (프로그래밍 언어)
    LPC는 1989년 Lars Pensjö가 개발한 객체 지향 프로그래밍 언어로, C와 유사한 문법을 가지며 MUD 게임 개발에 주로 사용된다.
  • 동적 프로그래밍 언어 - PHP
    PHP는 라스무스 러도프가 개발한 범용 스크립팅 언어로, 웹 개발에 널리 사용되며 LAMP 아키텍처의 핵심 요소이다.
  • 동적 프로그래밍 언어 -
    펄은 래리 월이 개발한 텍스트 조작에 강점을 가진 다목적 프로그래밍 언어이며, 1987년 펄 1.0이 처음 공개된 이후 여러 버전 업데이트를 거쳐 객체 지향 프로그래밍과 유니코드 지원 기능을 추가했고, 현재 펄 5가 널리 사용되며 CPAN을 통해 방대한 모듈 생태계를 제공한다.
  • 고급 프로그래밍 언어 - Tcl
    Tcl은 존 오스터하우트가 개발한 명령어 기반의 프로그래밍 언어로, Tk 툴킷과 결합하여 GUI 스크립팅 환경으로 발전했으며, 다양한 운영체제에서 사용 가능하고 C, C++, Java 등 다른 언어와의 인터페이스를 지원한다.
  • 고급 프로그래밍 언어 - PHP
    PHP는 라스무스 러도프가 개발한 범용 스크립팅 언어로, 웹 개발에 널리 사용되며 LAMP 아키텍처의 핵심 요소이다.
Rebol - [IT 관련 정보]에 관한 문서
일반 정보
개요
종류프로그래밍 언어
설계자칼 사센라스
개발사REBOL Technologies
발표 연도1997년
최신 버전2.7.8
최신 버전 배포일2011년 1월
시험 버전2.101.0
시험 버전 배포일2012년 12월
형식동적 타이핑, 강한 타이핑
라이선스2.7.8은 자유 배포 소프트웨어, 2.101.0은 아파치 2.0 라이선스
파일 확장자.r, .reb
영향을 준 언어Self, Forth, Lisp, Logo
영향을 받은 언어JSON, Red
운영 체제크로스 플랫폼
웹사이트REBOL 공식 웹사이트
위키북스Rebol Programming
특징
프로그래밍 패러다임언어 지향 프로그래밍, 데이터 교환, 함수형, 프로토타입 기반, 명령형

2. 역사

Rebol은 '''R'''elative '''E'''xpression '''B'''ased '''O'''bject '''L'''anguage의 약자로 처음에는 대문자로 표기되었다.[5][7] 이후 ''LISP''를 ''Lisp''로 변경한 것과 같이 언어 명명에 대한 현대적 트렌드에 맞춰 ''REBOL''을 모두 대문자로 쓰는 관행은 중단되었고, 칼 사센라스는 언어 이름을 ''Rebol''로 표기하는 관례를 채택했다.[11]

1997년에 처음 출시된 Rebol은 AmigaOS의 설계자이자 주요 개발자인 칼 사센라스가 20년 동안 지시적 의미론 연구를 바탕으로 Lisp, Forth, Logo, Self 프로그래밍 언어의 개념을 사용하여 설계했다.


  • 1998년, REBOL Technologies가 설립되었다.
  • 1999년, 확장된 인터프리터 에디션의 핵심이 된 인터프리터인 ''REBOL 2''가 출시되었다.
  • 2000년 9월, 강력한 암호화 및 ODBC 접근을 추가한 ''REBOL/Command''가 출시되었다.
  • 2001년 4월, 핵심 언어에 그래픽 기능을 추가한 ''REBOL/View''가 출시되었다.
  • 2001년 8월, REBOL로 구축된 확장 가능한 협업 환경인 ''REBOL/IOS''가 출시되었다.
  • 2002년 12월, 바인딩할 커널 선택과 전처리기를 제공하는 ''REBOL/SDK''가 출시되었다.
  • 2008년 1월, 인터프리터의 최신 버전인 ''Rebol 3'' [R3]의 알파 버전이 REBOL Technologies에서 출시되었다. 2012년 12월, Apache License 2.0 프로젝트로 출시된 이후 Rebol 커뮤니티에서 개발하고 있다.

3. 디자인

Rebol은 "단순한 일은 단순하게 처리한다"는 설계 원칙을 따르며,[5] 특정 목적에 최적화된 마이크로 언어인 '방언(dialect)'을 지원한다. 사용자는 자신만의 방언을 정의하여 기존 Rebol 단어에 새로운 의미를 부여할 수 있다.[5]

'do 방언'에서 `return`은 함수 결과 값을 전달하는 함수를 참조하는 전역 변수이지만,[13] '시각적 인터페이스 방언(VID)'에서는 캐리지 리턴을 시뮬레이션하여 "렌더링 펜"을 다음 줄로 이동시키는 키워드이다.[6]

Rebol 인터프리터는 다양한 방언을 이해하고 해석할 수 있으며, 주요 방언들은 다음과 같다.

방언 이름해석 주체목적
데이터 교환 방언load 함수데이터 및 메타데이터 표현; 레볼 방언의 공통 플랫폼
Do 방언do 함수프로그래밍
구문 분석 방언parse 함수패턴 매칭
함수 지정 방언make 함수함수 정의; 함수형 프로그래밍
객체 지정 방언make 함수객체 정의/상속; 프로토타입 기반 프로그래밍
시각적 인터페이스 방언 (VID)layout 함수그래픽 사용자 인터페이스 지정
그리기 방언view 함수그래픽 요소(선, 다각형 등) 정의
스크립트 지정 방언do 함수스크립트 정의
보안 정책 방언secure 함수보안 정책 지정


3. 1. 사용 편의성

Rebol은 "단순한 일은 단순하게 처리한다"는 설계 원칙을 따릅니다.[5] 예를 들어, ''Visual interface dialect''를 사용하여 그래픽 사용자 인터페이스(GUI)를 갖춘 간단한 Hello world 프로그램을 만들 수 있습니다.



view layout [text "Hello world!" button "Quit" [quit]]



R3-GUI에서는 다음과 같이 더 간단하게 표현할 수 있습니다.



view [text "Hello world!" button "Quit" on-action [quit]]



R3-GUI Hello world 예제


Rebol은 ''방언''이라고 불리는 도메인 특화 언어를 사용하여 특정 목적에 맞게 최적화할 수 있습니다. 사용자는 기존 Rebol 단어를 재사용하여 자신만의 방언을 정의하고, 특정 의미를 부여할 수 있습니다.[5]

예를 들어, ''do 방언''에서 `return`은 함수 결과 값을 전달하는 함수를 참조하는 전역 변수입니다.[13] ''시각적 인터페이스 방언(VID)''에서는 `return`이 캐리지 리턴을 시뮬레이션하여 "렌더링 펜"을 다음 줄로 이동시키는 키워드입니다.[6]

Rebol 인터프리터는 다양한 방언을 이해하고 해석할 수 있습니다. 다음은 주요 방언들을 나타낸 표입니다.

방언 이름해석 주체목적
데이터 교환 방언load 함수데이터 및 메타데이터 표현; 레볼 방언의 공통 플랫폼
Do 방언do 함수프로그래밍
구문 분석 방언parse 함수패턴 매칭
함수 지정 방언make 함수함수 정의; 함수형 프로그래밍
객체 지정 방언make 함수객체 정의/상속; 프로토타입 기반 프로그래밍
시각적 인터페이스 방언 (VID)
또는
RebGUI
layout 함수
또는
display 함수
그래픽 사용자 인터페이스 지정
그리기 방언view 함수그래픽 요소(선, 다각형 등) 정의
스크립트 지정 방언do 함수스크립트 정의
보안 정책 방언secure 함수보안 정책 지정


3. 2. 방언 (Dialects)

Rebol은 방언(Dialect)이라는 도메인 특화 언어를 통해 특정 작업에 최적화된 기능을 제공한다. 데이터 교환, 프로그래밍, GUI 개발 등 다양한 목적을 위한 방언이 있으며, 사용자는 자신만의 방언을 만들 수도 있다.

Rebol 방언은 기존 Rebol 단어에 특정 의미를 부여하여 만들어진다.[5] 예를 들어 `return`은 데이터 교환 방언에서는 의미 없는 단어지만, do 방언에서는 함수 결과 값을 전달하는 함수를, 시각적 인터페이스 방언(VID)에서는 줄바꿈을 의미하는 키워드로 사용된다.[13][6]

3. 2. 1. 주요 방언

레볼은 특정 목적에 최적화된 마이크로 언어인 ''방언''이라고 불리는 도메인 특화 언어를 가지고 있다. 방언은 비즈니스 규칙, 그래픽 사용자 인터페이스 또는 프로그램 설치 중 화면 시퀀스를 정의하는 데 사용될 수 있다. 사용자는 기존 레볼 단어를 재사용하고 해당 방언에서 특정 의미를 부여하여 자신만의 방언을 정의할 수 있다.[5] 방언은 특정 방식으로 레볼 블록을 처리하는 함수(또는 문자열 구문 분석)에 의해 인터프리터 언어로 해석된다.

레볼의 방언 능력의 예는 `'''return'''` 단어를 통해 볼 수 있다. ''데이터 교환 방언''에서 `'''return'''`은 특정 의미를 갖지 않는 단어일 뿐이다. ''do 방언''에서 `'''return'''`은 함수 결과 값을 전달하는 네이티브 함수를 참조하는 전역 변수이다.[13] ''시각적 인터페이스 방언(VID)''에서 `'''return'''`은 레이아웃 엔진이 캐리지 리턴을 시뮬레이션하여 "렌더링 펜"을 다음 줄의 시작 부분으로 이동시키는 키워드이다.[6]

그래픽 기능을 갖춘 레볼 인터프리터는 많은 방언을 이해하고 해석해야 한다. 아래 표는 주요 방언들을 중요도 순으로 나열한 것이다.

방언 이름해석 주체목적
데이터 교환 방언`load` 함수데이터 및 메타데이터 표현; 레볼 방언의 공통 플랫폼
Do 방언`do` 함수프로그래밍
구문 분석 방언`parse` 함수패턴 매칭
함수 지정 방언`make` 함수함수 정의; 함수형 프로그래밍
객체 지정 방언`make` 함수객체 정의/상속; 프로토타입 기반 프로그래밍
시각적 인터페이스 방언 (VID)`layout` 함수그래픽 사용자 인터페이스 지정
그리기 방언`view` 함수그래픽 요소(선, 다각형 등) 정의
스크립트 지정 방언`do` 함수스크립트 정의
보안 정책 방언`secure` 함수보안 정책 지정


4. 문법 (Syntax)

Rebol은 자유 형식 언어로, 특정 위치를 지정할 필요는 없지만 가독성을 위해 들여쓰기를 사용한다. Rebol의 기본 구문 단위는 식(expression)이며, 키워드는 존재하지 않는다. 공백, 대괄호([ ]), 괄호(( )), 큰따옴표(""), 중괄호({ }) 등을 구분 기호로 사용한다.[13]

데이터 교환 언어로서의 Rebol은 다음과 같은 특징을 갖는다.[13]


  • 문의 개념이 없고, 식(expression)이 기본 구문 단위이다.
  • 키워드가 존재하지 않는다.
  • 공백과 '''[''', ''']''', '''(''', ''')''', '''"''', '''{''', '''}''' 를 구분 기호로 사용한다.


다양한 자료형을 지원하며, 그 중 많은 수가 어휘 형식으로 정의되어 있다. 예를 들어, 전자 메일 주소형 (name@host.dom), URL형 (http://www.rebol.com), 마크업 태그형 (<b>, <font size="2" color="blue">), 가격형 ($100.00, USD$25.25), 날짜형 (30-Nov-2005, 1-Dec-2005/10:30-7:00), 시각형 (12:00:00), 좌표쌍형 (5x5), 튜플형 (255.255.255, 192.168.100.1), 단어열형 (how are you?) 등이 있다. 이러한 자료형은 프로그래머 이외에도 이해하기 쉬운 어휘 형식을 사용하고 있어 데이터 교환 언어로서 사용할 수 있게 되어 있다.[13]

Rebol에서 값을 그룹화하는 데 사용되는 주요 데이터 구조는 "블록"이라고 부르며, 이는 Lisp의 "리스트"와 유사하다.

Rebol은 콘텐츠 종속 언어이며, 다이얼렉트(방언, dialect)라고 불리는 도메인 특정 서브 언어를 지원한다. 예를 들어, ''return''이라는 단어는 ''Visual Interface Dialect''(VID)에서는 레이아웃 엔진이 캐리지 리턴(carriage return)으로 해석하여 렌더링 펜을 다음 행의 시작 부분으로 이동시킨다. Rebol 프로그래머는 고유한 다이얼렉트를 생성할 수 있으며, 기존 Rebol의 단어에 다른 의미를 부여할 수 있다.

다이얼렉트는 Rebol 블록을 특정 방식으로 처리하는 함수로 구현되는 것이 일반적이다. 마찬가지로 다른 함수에서도, 네이티브 다이얼렉트와 Rebol로 작성된 다이얼렉트를 식별할 수 있다.

다이얼렉트의 예:[13]

  • '''do''' 다이얼렉트 - Rebol의 일반적인 '''do''' 함수가 이해하고 해석할 수 있다(네이티브).
  • '''reduce''' 다이얼렉트 - '''do''' 다이얼렉트로 결과를 수집하도록 변경한 것(네이티브)
  • '''compose''' 다이얼렉트 - '''reduce''' 다이얼렉트로 괄호만 평가하도록 변경한 것(네이티브)
  • '''function spec''' 다이얼렉트 - 함수 헤더 기술에 사용되는 다이얼렉트(네이티브)
  • '''parse''' 다이얼렉트 - 바커스-나우르 표기법풍의 문법 규칙을 기술하기 위한 도구(네이티브)
  • ''VID'' - GUI용 다이얼렉트로, '''layout''' 함수로 구현되어 있다(mezzanine).


사용자는 임의의 Rebol 함수를 사용하여 다이얼렉트를 생성할 수 있지만, '''reduce''' 함수와 '''compose''' 함수가 자주 사용되며, '''parse''' 함수는 다이얼렉트 생성에 최적화되어 있다.

4. 1. 의미 (Semantics)

REBOL은 인터프리터 방식의 고급 프로그래밍 언어이며, 멀티 플랫폼 및 멀티 패러다임을 지원하고 동적 리플렉션을 지원하는 언어이다. 코드와 데이터가 동일한 형식으로 표현되는 동형성(Homoiconicity)을 가지고 있어 메타 프로그래밍에 최적이다.[5]

구조적 프로그래밍, 함수형 프로그래밍, 프로토타입 기반 프로그래밍을 지원한다. REBOL은 순수 함수형 언어가 아니며, 부작용이 있는 명령형 프로그래밍의 요소도 가지고 있다. 또한 순수 객체 지향 언어도 아니며 객체가 아닌 데이터형도 가지고 있어, 다른 프로그래밍 패러다임도 지원한다. REBOL은 특히 언어 지향 프로그래밍에 적합하며, 더 나아가 다이얼렉팅 (방언 파생)에 적합하다.

REBOL은 동적 프로그래밍 언어이며, 동적 타이핑 (값은 강한 타이핑이지만, 변수는 그렇지 않다)이다. 메모리 관리에는 가비지 컬렉션을 사용하며, 예외 처리와 동적 이름 해결을 지원한다.

4. 1. 1. do

`do` 함수는 Rebol 코드를 해석하고 실행하는 가장 기본적인 평가자(evaluator)이다.[13] `do` 방언은 표현식 지향적인 하위 언어로, 변수 할당, 함수 호출, 제어 흐름 등을 지원한다.

단어는 대소문자를 구분하지 않는 변수로 사용된다. 모든 동적 형식 언어와 마찬가지로 변수에는 관련 유형이 없으며, 유형은 값과 연관된다. `do` 함수가 단어를 발견하면 결과, 즉 단어의 평가가 반환된다. 단어의 설정 단어 형식을 사용하여 할당할 수 있다. 문이 없지만, 할당은 부작용이 있는 함수와 함께 명령형 프로그래밍에 사용할 수 있다.[13]

루트 블록의 하위 블록은 자체적으로 평가된다. 이 속성은 데이터 블록을 처리하는 데 사용되며, `if`, `either`, `loop` 등과 같은 제어 함수에 블록을 인수로 제출하여 구조적 프로그래밍을 수행하고, 특정 인터프리터 함수에 블록을 전달하여 방언을 만드는 데 사용된다.[5]

변수에 할당된 복합 값이 복사되지 않는다는 점은 주목할 만하다. 복사본을 만들려면 값을 `copy` 함수에 전달해야 한다.[13]

`do` 함수는 일반적으로 함수가 뒤따르는 인수를 처리하는 접두사 스타일 평가를 따른다. 그러나 중위 연산자를 사용한 중위 평가도 존재한다. 중위 평가는 접두사 평가보다 우선한다. 예를 들어,

`abs -2 + 3`

은 1을 반환하는데, 이는 중위 덧셈이 절댓값 계산보다 우선하기 때문이다. 중위 표현식을 평가할 때, 평가 순서는 왼쪽에서 오른쪽으로 진행되며, 어떤 연산자도 다른 연산자보다 우선순위를 갖지 않는다. 예를 들어,

`2 + 3 * 4`

는 20을 반환하며, 곱셈에 우선순위를 부여하는 평가는 14를 반환한다. 모든 연산자에는 접두사 버전이 있다. `Do`는 일반적으로 인수를 함수에 전달하기 전에 평가한다. 따라서 아래 표현식은 다음과 같다.

`print read`

먼저 위키백과 Rebol 페이지를 읽은 다음 결과를 `print` 함수에 전달한다. 괄호를 사용하여 평가 순서를 변경할 수 있다. 접두사 표기법을 사용하면 표현식에서 괄호 사용을 피할 수 있다.[13]

단순한 우선순위 규칙은 장점이자 단점이다.[5]

  • 표현식을 작성할 때 우선순위 테이블을 "참조"할 필요가 없다.
  • 새로운 연산자가 정의될 때 우선순위 테이블을 다시 작성할 필요가 없다.
  • 표현식은 중위 표기법에서 접두사 표기법으로 또는 그 반대로 쉽게 전사될 수 있다.


단점:[5]

  • 더 전통적인 우선순위 규칙에 익숙한 사용자는 쉽게 실수를 할 수 있다.

4. 1. 2. parse

parse영어 함수는 방언을 지정, 유효성 검사, 변환 및 해석하는 데 사용된다.[5] parse영어 방언은 파싱 표현 문법(PEG)과 유사한 방식으로 동작하며, 런타임에 구문 분석 규칙을 해석한다.[5] 문자열 파싱과 블록 파싱을 모두 지원하여, 다양한 수준의 추상화된 구문 분석을 수행할 수 있다.[5]

parse영어 함수는 블록 또는 문자열을 처리하는 데 사용될 수 있다. ''문자열 구문 분석'' 수준에서 parse영어문자와 구분 기호를 고려하여 "낮은 수준" 구문 분석을 처리해야 한다. ''블록 구문 분석''은 더 높은 수준이며 Rebol 값 수준에서 스캔을 처리한다.[5]

구문 분석 방언은 톱다운 파싱 언어 또는 파싱 표현 문법(PEG)으로 표현되는 문법 계열에 속한다. 모든 패밀리 구성원이 가지고 있는 ''시퀀스'' 및 ''선택'' 연산자의 존재가 주요 유사점이다.

REBOL은 인터프리터 방식의 고급 프로그래밍 언어이며, 실행 시에 구문 분석 규칙을 해석한다.

'''parse''' 함수의 목적은, BNF풍의 형식의 파싱 표현 문법의 구문 규칙을 지정함으로써 다이얼렉트의 해석을 부여하는 것이며, yacc나 Bison과 같은 구문 분석 도구와 유사하다.

'''parse'''에 의한 문자열 처리는 매우 유연성이 있지만, 저수준적인 수법이므로, 수고가 많이 든다. 블록 분석이 더 간단하지만, 제한이 있다. 블록 분석에서는, ROBOL은 쓰여진 규칙을 REBOL 값의 나열로서 어휘 분석한다(문자열 분석에서는 문자와 구분 기호로 해석한다). 그 때문에, 더 추상화된 규칙으로서 기술할 수 있지만, 일반적인 REBOL의 어휘 형식에 일치해야 한다.

''parse'' 함수에 해석시킬 규칙군 자체도 REBOL의 방언으로 작성한다. 문자열로 해석하는 경우, REBOL의 데이터형 일부를 규칙에 사용할 수 있다. 블록으로 해석하는 경우, 모든 REBOL 데이터형을 사용할 수 있으며, 그 외에도 방언 구축을 용이하게 하는 기능들을 사용할 수 있다.

다음은 문자열을 분석하여 특정 단어를 찾고, 관련 데이터의 일부를 변수로 복사하여 다른 곳에서 사용하는 예시이다.

```rebol

strings: [

"write Graham a thank-you note"

"send Allen the new source code"

]

foreach string strings [

print string

; 규칙은 블록으로 표시되며, 대괄호로 묶여 있습니다.

parse string [

; 각 문자열은 다음 단어 중 하나로 시작합니다. COPY는

; 텍스트의 일부를 복사하여 나중에 사용합니다.

copy how ["write" | "send"] (print ["How:" how])

; 여기서, 다음 공백까지를 복사합니다. 그 후에는 "a" 또는

; "the"가 이어집니다. 여기서는 괄호를 사용하여 규칙이 일치했을 때

; 취해야 할 동작을 정의합니다.

copy who to " " ["a" | "the"] (print ["Who:" who])

; 마지막으로, 문자열의 끝까지를 복사합니다.

copy what to end (print ["What:" what])

]

print ""

]

```

"parse string" 블록의 마지막 줄을 보면, "copy what"은 현재 파서가 보고 있는 위치("a" 또는 "the" 뒤)부터 텍스트를 복사하여 변수 "what"에 대입하는 것을 의미한다. 또한, 방언은 "to end"를 지정하고 있으므로 문자열의 마지막까지 모두 복사하는 것을 의미한다. 따라서 "what"에는 첫 번째 문자열의 경우 "thank-you note", 두 번째 문자열의 경우 "new source code"가 대입된다.

```rebol

Print ["What:" what ]

```

를 입력하면 다음과 같이 출력된다.

What: thank-you note

What: new source code

다음은 파일 분석 유틸리티 예시이다. 사용자가 조작할 파일을 지정하고, 언제 실행하고, 결과를 어디로 보내고, 누구에게 알릴지를 쉽게 지정할 수 있도록 하는 것이 목적이다.

```rebol

command-blocks: [

[

analyze %test-1.txt %test-2.txt

post results to http://www.wikipedia.org/results.dat

notify rebol-xyz@wikipedia.org at 10:00 and again at 10:00pm

]

[

at 10:00 and at 10:00pm analyze %test-1.txt notify

rebol-xyz@wikipedia.org and reb-guy@wikipedia.org

post to ftp://wikipedia.org/results.dat

]

]

; 아포스트로피가 앞에 붙은 단어는 일치시키고 싶은 리터럴 단어열이다.

; 느낌표가 뒤에 붙은 단어는 일치시키고 싶은 데이터 타입이다.

; SOME은 "one or more"를 의미한다. 정규 표현식의 "+"와 비슷하다.

; OPT는 옵션을 의미하며, 0개 또는 1개여도 된다.

; SET은 일치한 값을 나중에 참조할 수 있도록 단어와 연결한다.

; 변수에 대입하는 것과 같다.

foreach block command-blocks [

print mold block

parse block [

some [

['analyze some [set file file! (print file)]]

| ['notify some [set who email! opt 'and (print who)]]

| ['at set when time! (print when)]

| ['post opt 'results 'to set target url! (print target)]

| 'again

| 'and

] to end

]

print ""

]

```

이 예에서 file영어, email영어, time영어, url영어과 같은 것들은 모두 REBOL에서의 네이티브 데이터 타입이며, 구문 분석 중에 해당 값을 추출하여 직접 REBOL의 식에 적용할 수 있다. 예를 들어, ''who''의 값은 ''send'' 함수에서 전자 메일 전송에 사용되고, ''target''의 값은 ''write'' 함수에 의한 데이터 전송에 사용된다.

5. 구현 (Implementations)

공식 Rebol 2.7.8 구현은 /Core, /View, /Command, /SDK, /IOS 등 여러 에디션으로 제공된다.[1] /Core와 /View 에디션은 자유 재배포 소프트웨어이다.

런타임 환경은 단일 실행 파일로 제공된다. 콘솔 에디션인 Rebol/Core 2.7.8은 약 300KB이며, 그래픽 사용자 인터페이스 에디션인 Rebol/View 2.7.8은 약 650KB이다.

Rebol/View는 플랫폼 독립적 그래픽 및 사운드 접근을 제공하며, 자체 창 도구 키트와 확장 가능한 스타일 세트(GUI 위젯)를 갖추고 있다. Rebol/Command 2.7.8 또는 Rebol/SDK 2.7.8과 같은 확장 에디션은 유료 라이선스가 필요하며, ODBC 데이터 접근 및 독립 실행형 실행 파일 생성 옵션과 같은 기능을 추가한다.

6. 영향 (Legacy)

더글러스 크락포드는 Rebol을 JSON의 영감 중 하나로 꼽았다.[4] Rebol은 오픈 소스 프로젝트인 Orca에 영감을 주었으며, Orca는 Rebol과 유사한 해석형 언어이다.[14] [http://urlan.sourceforge.net/boron/ Boron]은 Rebol에서 영감을 받아 만들어진 동형 언어로, 특정 도메인 언어를 내장하기 위한 언어이며, LGPLv3 조건에 따라 라이선스가 부여된 C 라이브러리로 구현되었다. Red 프로그래밍 언어는 Rebol에서 직접적인 영감을 받았지만, Red의 구현 선택은 Rebol의 단점으로 인식된 부분을 극복하는 데 초점을 맞추었다.[15]

참조

[1] 간행물 The REBOL/View and REBOL/Core 2.7.8 license http://www.rebol.com[...] REBOL Technologies
[2] Github R3 source https://github.com/r[...]
[3] 웹사이트 Carl's REBOL Blog - Let's switch to .reb suffix http://www.rebol.com[...] Rebol.com 2013-08-18
[4] Youtube The JSON Saga https://www.youtube.[...]
[5] 서적 REBOL for Dummies Hungry Minds 2000
[6] 서적 Rebol Programmation Eyrolles 2001
[7] 웹사이트 Inside the REBOL scripting language http://www.ddj.com/1[...] Dr. Dobb's Journal 2000-07-01
[8] 웹사이트 REBOL to become open source http://www.rebol.com[...] Rebol.com 2012-09-25
[9] 웹사이트 Comments on: R3 Source Code Released! http://www.rebol.com[...] Rebol.com 2012-12-12
[10] 웹사이트 Calling REBOL Rebol? https://web.archive.[...] 2012-12-14
[11] 웹사이트 Cross-compiling Rebol for your favorite embedded board http://www.rebol.com[...] 2016-09-16
[12] 웹사이트 Source code for the Rebol interpreter https://github.com/r[...] 2017-03-14
[13] 서적 REBOL: The Official Guide McGraw-Hill Osborne Media 2000
[14] Freecode rebol-orca project http://freecode.com/[...]
[15] Github Red project https://github.com/r[...]
[16] 웹사이트 R3 Source Code Released! http://www.rebol.com[...] Carl Sassenrath 2012-12-12
[17] 웹사이트 セマンティック技術を持つプログラミング「REBOL 3.0」、オープンソースソフトウェアとして公開 http://sourceforge.j[...] OSDN Corporation 2012-12-14
[18] 웹사이트 セマンティック技術を採用したプログラミング言語がソースコード公開 https://atmarkit.itm[...] アイティメディア 2012-12-17
[19] 간행물 The REBOL/View and REBOL/Core 2.7.8 license http://www.rebol.com[...] REBOL Technologies
[20] Github R3 source https://github.com/r[...]
[21] 웹인용 Carl's REBOL Blog - Let's switch to .reb suffix http://www.rebol.com[...] Rebol.com 2013-08-18
[22] 서적 REBOL: The Official Guide McGraw-Hill Osborne Media 2000
[23] Youtube The JSON Saga https://www.youtube.[...]



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

문의하기 : help@durumis.com