2011-07-05 7 views
19

Haskell REPL을 내 Haskell 응용 프로그램 중 하나에 포함하려고합니다. Haskell 라이브러리의 하위 세트 만 기본적으로로드되고 내 자신의 함수 세트가 사용되며 사용자는 환경과 상호 작용하기 위해이를 사용합니다.Haskell 응용 프로그램 내에서 Haskell REPL 만들기

이 문제를 해결하기 위해, (미니) 하스켈 파서 + 평가자를 작성하고 내 하스켈 파서의 함수를 실제 하스켈 함수에 매핑하는 방법이 있음을 알고 있지만 더 나은 방법이 있다고 확신합니다. 이 작업을 수행.

하스켈을 사용하여 하스켈을위한 REPL을 빌드하는 멋지고 깨끗한 방법이 있습니까?

+0

GHC 라이브러리를 사용하고 있습니까? (그들은 컴파일 된 Haskell 코드와 상호 작용할 수있는 많은 방법을 제공한다.) – fuz

+0

예, 옵션이지만 사용할 수있는 경험이 없습니다. 올바른 라이브러리로 안내해 주시겠습니까? – CharlieP

+0

[haskell.org] (http://haskell.org/haskellwiki/GHC/As_a_library)를 살펴 보는 것은 어떻습니까? – fuz

답변

10

이미 존재하는 몇 가지 :

  • GHCi 물론, 모두가 구현 어떻게 볼 수있는 직접 사용할 수 있다는 의미에서 (즉, 당신의 REPL 그냥 이야기 한 stdin/stdout을 통해 GHCi로 전송).
  • 당신이 GHC에 끼어 당신을 위해 모든 무거운 할 수 있도록 할 수있는 full GHC API - 로딩 파일, 종속성을 쫓는 구문 분석, 유형 검사 등의 부분 집합의 래퍼입니다
  • hint, GHC API는 편집보다는 대화식 해석에 초점을 맞추고 있습니다. 이는 원하는 작업에 적합합니다.
  • mueval,로드 된 모듈, 자원 사용 등에 대한 제한이있는 평가자는 기본적으로 "안전한"대화식 모드입니다. #haskell IRC 채널에 있다면 lambdabot이 사용하는 것입니다.

위의 내용은 모두 하스켈 인터프리터 작성을 직접 다루지 않으려는 것으로 가정합니다. 이는 아마도 그렇습니다.