REPL


### REPL(read-eval-print loop) = interactive toplevel = language shell
일반적인 예로는 프로그래밍 언어를 위한 명령 줄 셸 및 유사 환경을 들 수 있으며 기법은 스크립트 언어의 특징과 매우 닮아있다

REPL에서 사용자는 (전체 컴파일 단위가 아닌) 하나 이상의 식을 입력하면 REPL은 이들을 평가하고 결과를 표시한다


[셸](https://ko.wikipedia.org/wiki/%EC%85%B8)로서 REPL 환경을 통해 사용자가 운영 체제의 관련 기능에 접근할 수 있고 프로그래밍 기능에도 접근이 가능하다.
운영 체제 셸 밖에서 REPL의 가장 일반적인 용도는 즉각적인 프로토타이핑이다. 그 밖의 용도로는 수식 계산, 과학 분석(예: [IPython](https://ko.wikipedia.org/w/index.php?title=IPython&action=edit&redlink=1))을 연동하는 문서 만들기, 상호 작용적인 소프트웨어 유지보수, [벤치마킹](https://ko.wikipedia.org/wiki/%EB%B2%A4%EC%B9%98%EB%A7%88%ED%82%B9), 알고리즘 탐색이 있다.
REPL은 새로운 언어를 학습하는데 필수적인 부분으로 되고 있는데, 초보자에게 빠른 피드백을 제공하기 때문이다.

> [REPL](https://ko.wikipedia.org/wiki/REPL)



# 구현체
(**define **(REPL env) (print (eval env (read))) (REPL env) )
여기서 `env`는 초기 `eval`-uation(평가) 환경을 대표한다. 또, `env`가 `eval`에 의해 업데이트될 수 있다.




