Skip to content

beeramtheman/99haskell

Repository files navigation

99 Haskell (99haskell.org)

preview

What

Solve live Haskell coding problems based on H-99 in the browser to strengthen your understanding of the language.

How

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.

Development

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.

Production

In production you should remove middleware logStdoutDev from the bottom of Main.hs.

About

Live Haskell coding problems

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •