27

특정 언어가 아닌 REPL이 있는지 알고 싶습니다. 나는 REPLs (주로 Clojure, Scala, Haskell)를 들여다 보며 많은 시간을 보내고, 번들 된 것들은 모두 나를 더 크게 또는 덜 좌절시킨다. 그것은 REPL의 작업처럼 보인다는 점에서 매우 일반적이다 그들이 :그들 모두를 묶는 하나의 REPL?

  • 읽기 :
  • 는 평가 사용자 입력을 : 처리를 위해 일부 런타임
  • 인쇄를 입력을 통과 : 화면에 결과를 인쇄
  • 루프 : 일부 언어에 얽매이지 REPL이 안 나는 왜 표시되지 않습니다 다음 사용자 입력

대기,하지만 난 그런 일을 찾을 수 없었습니다. 어떤 것들은 내 이상적인 REPL을에 싶습니다

  • 리눅스 명령 줄 응용 프로그램
  • 무한 역사를 위하기 전에 이전 명령을 편집 할 수
  • 능력 화살표를 통해 액세스 재 실행
  • CTRL-R에 대한 역사 검색 like bash has
  • 한 REPL에서
  • 여러 세션, 그래서 나는

그리고 더 쉽게 전환 할 수 있습니다 낙관적

  • 구문 강조, 문맥 인식 코드 완성

이 존재 하는가?

+5

모든 Emacs REPL 모드는 커먼 모드의 맨 위에 구축되어 서로 매우 비슷하게되는 경향이 있습니다. 자연스럽게 그들은 히스토리와 코드 완성 (적절한 경우)을 지원합니다. – dfan

+2

여기에 상충되는 요구 사항이 있습니다. REPL은 동시에 언어에 대해 알지 못하지만 코드 완성을 제공하기 위해 어쨌든 마술처럼 언어에 대한 지식이 있습니다. –

+3

나는 이것들이 모순되는 것으로 보지 않는다. 나는 여러 백엔드에 대한 통일 된 인터페이스를 제공하는 REPL을 원한다. 언어 인식 기능은 플러그 식이어야합니다. 그게 전부입니다. –

답변

31

배쉬 (Bash)는 C-r에 대해 아무 것도 모릅니다 : 그것은 업 화살표 히스토리뿐만 아니라 readline을 사용합니다. 당신이 찾고있는 REPL이 readline 인 것 같은데? rlwrap을 사용하여 REPL과 비슷한 동작을 원하는 명령에 접두사를 붙이십시오 (설치하지 않았다면 설치하십시오 - 훌륭합니다). 그러면 좋을 것입니다.

+0

OK이 방법은 clj repl에서 잘 작동하지만 어떤 이유로 든 scala repl에서 Ctrl-r을 사용하지 않습니다. ghci가 이미 readline을 사용하고있는 것처럼 보입니다. 편집 : 실제로 이것은 clojure repl에 * 엄청난 차이를 만듭니다 - 감사합니다! –

+0

+1에 대한 rlwrap : 나는 clojure를 배우기 위해 그것을 사용하기 시작했고 훨씬 재미있게 만들었습니다. –

+0

이것은 REPL 비트가 아닌 ctrl-r 비트에 응답하는 것으로 보입니다. 이미 repl을 수행 한 명령에 readline을 추가하는 것뿐입니다. –

5

스칼라 2.9 REPL은 CTRL-R 역 검색을 지원합니다. 야간 빌드에는 이미 있습니다. 잠시 동안 상황 인식 탭 완성이있었습니다 (개선 될 수는 있겠지만). rlwrap 간섭 jline 방지

rlwrap scala -Xnojline 

: rlwrap와 스칼라 사용시

-Xnojline 플래그를 사용한다. 그런 다음 rlwrap은 readline을 사용하여 커서 동작과 내역 을 자유롭게 구현할 수 있습니다.하지만 인터프리터가 회선을 인식하기 전에는 언어 인식 완료가되지 않습니다..

스칼라 REPL이 개선되기를 바랍니다.

  • 하이라이트 오류 및 완료와 같은 것에 사용되는 2.9의 일부인 프리젠 테이션 컴파일러가 있습니다.
  • scala 2에서 사용되는 jline.9는 ansi 색상을 활용할 수 있습니다. jansi

그래서 언젠가는 내가 스칼라 REPL에서 IDE 레벨 기능을 갖게 될 것이라고 꿈꿀 수 있습니다. 현실적으로, 그것은 상당한 노력이 필요하고 이러한 기능을 추가하는 것은 예를 들어 일식 지원을 개선하는 것보다 분명히 우선 순위가 낮습니다 ... 게다가 일식에서 REPL 지원을 추가하는 것이 더 합리적 일 수 있습니다.

+0

이것은 REPL 비트가 아닌 ctrl-r 비트에 응답하는 것으로 보입니다. 이미 repl을 수행 한 명령에 readline을 추가하는 것뿐입니다. –

2

엄밀히 말하면 REPL이 아닌 SecoJSR-223 바인딩을 사용하여 모든 언어의 표현식을 평가할 수있는 노트북 스타일의 쉘을 제공합니다. 이 rapidly growing list에는 Javascript, Scheme, Python, Ruby, Clojure, Groovy 및 Prolog와 같은 언어가 포함되어 있습니다.

Seco의 아이디어 인 Mathematica 노트북 프론트 엔드는 원칙적으로 어떤 언어로든 표현을 평가할 수 있습니다. 단, 그럴 경우에는 some work이 필요합니다.

관련 문제