2015-01-16 4 views
12

그렇다면 브라우저에서 다시 컴파일 한 다음 브라우저에서 다시 실행 (Haskell) 구성을 변경하여 사람들이 내 프로젝트로 놀 수있게 할 수 있습니다. 나는 속도에 신경 쓰지 않는다. 브라우저에서 기본 설치가 어려운 데스크톱 프로젝트를 데모 할 수 있기를 바랍니다. 따라서 새로운 사용자는 설치를 원하지 않고 몇 초 만에 볼 수 있습니다.GHCJS/Haste가 스스로 컴파일 할 수 있습니까?

얼마나 멋진가!

GHCJS는 STG를 JavaScript로 컴파일합니다. GHC API를 사용하기 때문에 다른 Haskell 라이브러리와 마찬가지로 JavaScript로 컴파일 할 수 있어야합니다. (맞습니까?) GHC 런타임에는 C가 많이 있지만 컴파일러 자체는 순수한 Haskell입니다.

너무 :

  1. 자바 스크립트 자체로 컴파일 GHCJS 수 있습니까?
  2. JavaScript를 자체적으로 컴파일 할 수 있습니까?
  3. 이 중 하나를 수행 했습니까?
+0

확장 프로그램 중 하나라도 문제가되지 않아야한다고 생각하지 않습니다. 둘 다 GHC 중간 언어에서 물건을 가져옵니다. 도서관 지원이 더 큰 관심사라고 생각합니다. – dfeuer

+0

참으로. https://github.com/valderman/haste-compiler는 Template Haskell을 제외한 모든 확장을 지원한다고 말합니다. btw, 도서관 지원으로 무엇을 의미합니까? –

+2

GHC의 C FFI에 의존하는 라이브러리는 작동하지 않습니다. GHCJS는 그렇지 않지만 병렬과 동시 프로그래밍에 대한 Haste의 지원은 다소 제한적입니다. GHCJS보다 Hast의 주된 장점은 브라우저 환경에서 특히 중요한 컴파일 된 컴파일 된 코드를 생성한다는 것입니다. 하지만 나는 그들 중 누구도 사용하지 않았다. – dfeuer

답변

11

GHCJS 및 가속 모두, 내 지식, 활용 GHC 직접 (그 http://haste-lang.org/try/ 작품? 그것은 네트워크를 필요로. 보이는 방법이다). GHC는 주로 haskell이지만 런타임 및 작동 방식면에서 상당한 양의 cbits에 묶여 있습니다. 나는 현재 어느 순간도 브라우저에서 직접 "자체 호스팅"방식으로 실행되도록 컴파일 할 수 없다고 확신합니다.

그러나 JS의 "Haskell-like dialect"인 Fay는 GHCJS를 통해 컴파일 될 수 있는데, 이것은 꽤 원할하지는 않지만 (https://github.com/ghcjs/ghcjs-examples/tree/master/fay-hello) 어쩌면 당신이 원하는 것이 아닐지라도.

시스템이 간단하면 emscripten을 사용하여 브라우저에서 포옹을하고 사용자가 그걸 가지고 놀 수 있습니다.

추측하자면 다양한 "브라우저에서 시도"사이트는 실제로 코드에 실제로 실행되는 mueval과 같은 것을 실행하는 컴퓨터에 실제로 연결을 사용합니다.

+0

감사합니다. 나의 유스 케이스는 임의의 (FFI가 아닌) GHC 확장 (그래서 Fay가 없음)으로 hackage에 넣은 프로젝트를 취하고, 브라우저에서 재 컴파일 할 수있는 느리고/제한된 데모를 갖는 것이다. 서버가 해당 코드를 재 컴파일하거나 보안에 대해 걱정하지 않아도되는 것이 좋습니다. 내가 읽은 것에서, mueval은 매우 견고한 것 같습니다. –

+2

GHC 런타임이 실제로 어떻게 관련되는지 모르겠습니다. GHCJS와 Haste는 일반적인 GHC 런타임을 전혀 사용하지 않는 코드를 생성합니다. – dfeuer

+0

@dfeuer right, 모든 "cbits"는 ghcjs의 JavaScript 여야합니다. 하지만 저는 GHC를 공부하지 않았습니다. 100k 이상이 같기 때문에 런타임에 typechecking/codegen에서 암시 적으로 의존 할 수도 있습니다. –