Description
Interactive Haskell interpreter in a browser.
Description
ghclive is an interactive multi-user Haskell interpreter in a browser. It mixes a pastebin with an interpreter and is designed for remote teaching.
README.md
ghclive
Google Summer of Code 2012 project, GHCi for the web
Requirements
Chrome 21.x Firefox 14.x
Does not work with Firefox 10
Quick start installation
git clone https://github.com/shapr/ghclive.git && 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!
Prototypes
The prototypes subdirectory contains several quick hacks demonstrating various concepts.
- hintdownloadexecute is hint's example.hs modified to download and execute Demo.main from http://www.scannedinavian.com/~shae/Demo.hs .
- 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 http://haskell.handcraft.com/ modified to have scotty and hint as a backend instead of calling tryhaskell.org.
- 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 tryhaskell.org, 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).