99 Haskell (99haskell.org)
Solve live Haskell coding problems based on H-99 in the browser to strengthen your understanding of the language.
99 Haskell loads users' code in GHCi in their own Docker containers and calls the functions with set arguments. It then parses GHCi's output to see if the returned value matches the expected value.
99 Haskell requires Docker and uses the haskell:7.8 Docker image.
Compile Script.hs* into Script.js with Fay (fay Script.hs
). Then cabal run
will build and run the 99 Haskell executable on
port 3000.
* Probably the worst written part of the program. JS in Haskell is weird.
Creating/modifying problems is easy, simply edit Problems.hs. Note
you will have to restart 99 Haskell for problem changes to take effect
(runhaskell Main.hs
makes this process quick). 99 Haskell uses H-99's
problems, hence the name. Wording can (and often should) be changed for
clarity, but the expected input/output needs to remain the same. 99 Haskell
automatically links every problem to its corresponding H-99 solution.
Some solution pages are quite bad, so editing the solution pages on haskell.org
is greatly appreciated.
Some very basic security measures have been put in place, but things are far from ideal. 99 Haskell doesn't host any sensative content, but any time spent making it harder for a kiddie to tear down the site is huge.
99 Haskell was made as a "learn by doing" exersise for myself to learn the Haskell language. Any contributions for the sake of cleaning up bad code is welcome, and would benefit me and possibly others who may look through the source.
In production you should remove middleware logStdoutDev
from the bottom of
Main.hs.