ghclive: Interactive Haskell interpreter in a browser.

[ application, bsd3, compilers-interpreters, library, program, web ] [ Propose Tags ]

ghclive is an interactive multi-user Haskell interpreter in a browser. It mixes a pastebin with an interpreter and is designed for remote teaching.

[Skip to Readme]
Versions [RSS] [faq],,
Dependencies aeson (>0.6 && <0.7), base (==4.*), blaze-html (>0.5), blaze-markup (>0.5), bytestring (>0.9), containers (>0.4), diagrams-lib (>0.5), diagrams-svg (>0.3), directory, file-embed (>0.0.4), ghc-prim, ghclive (>0.0.1), hint (==0.3.*), mtl (>=2.0 && <3), text (>0.11), time (>1.3), unix, unordered-containers (>0.2), vector (>0.9), wai (==1.3.*), wai-websockets (>1.3), warp (==1.3.*), websockets, yesod (==1.1.*), yesod-static [details]
License BSD-3-Clause
Author Shae Erisson
Category Web, Compilers/Interpreters, Application
Home page
Source repo head: git clone
Uploaded by ShaeErisson at 2012-08-20T21:14:37Z
Distributions NixOS:
Executables ghclive
Downloads 2437 total (17 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]




Maintainer's Corner

For package maintainers and hackage trustees


Readme for ghclive-

[back to package description]


Google Summer of Code 2012 project, GHCi for the web


Chrome 21.x Firefox 14.x

Does not work with Firefox 10

Quick start installation

git clone && cd ghclive && cabal install && ghclive then point your browser to http://localhost:3000

Here's some source code to paste into the editor buffer:

import Diagrams.Prelude
import Prelude
import Network.Web.GHCLive.Display

hilbert = iterate expand mempty where
  expand t = alignBL $ hcat [u, hrule 1, reflectX u] where
             u = vcat [t, vrule 1, rotateBy (3/4) t]

ex = pad 1.1 . centerXY . lw 0.05 $ hilbert!!5

then type ex in the Haskell expression buffer and hit enter!


The prototypes subdirectory contains several quick hacks demonstrating various concepts.

  • hintdownloadexecute is hint's example.hs modified to download and execute Demo.main from .
  • scottywebexecute is the basic.hs example from scotty modified only slightly to prove to myself that I understand the code.
  • hintdownloadexecute is the front end from modified to have scotty and hint as a backend instead of calling
  • scottyjsonclock was a quick refresher for how AJAX works in Haskell.
  • hintpostexecute uses all the previous prototypes to give a very basic ghci in the browser with Main.hs loaded from any http URL
  • jqueryconsole extends the above prototypes to use Chris Done‘s jquery-console as famously seen in, giving a more GHCi-like result
  • jqueryraw is much simpler in that it uses jquery but not jquery-console.
  • svgdemo demonstrates SVG being returned from diagrams
  • multimport takes any number of imports from a textbox. Each line is either the http address of a file to load, or a module name to bring in scope (Data.Char).