Skip to content

Sharpen your functional programming skills with Werner Hett's Ninety-nine Problems, adapted to Elm by John Crane, solved and presented in an interactive fashion by me..

Notifications You must be signed in to change notification settings

robertlisaru/ninety-nine-elm-problems

Repository files navigation

99 Problems solved in Elm, on a web app built with Elm

image

Live demo with responsive layout

https://robertlisaru.github.io/ninety-nine-elm-problems/

To do

  • setup CI
  • setup elm-review
  • refactor into proper unit tests
  • setup dev server
  • show code for each problem
  • allow input of a custom list to run the problems on
  • search functionality
  • responsive ui for mobile
  • nicer ui
  • search inside problem descriptions too
  • dark theme
  • setup cache in CI script for faster deployment
  • come up with faster algorithms for Goldbach problems
  • do not block UI with long operations
  • add requirement text for all problems
  • find missing problems

About Elm

Elm is a purely functional programming language and a frontend web framework. If you are not used to functional programming, it will be challenging at first. But once you learn and use it for a while, it becomes a pleasure to write code.

  • Most of the bugs reveal themselves at compile time.
  • No hidden runtime exceptions will be breaking your production code.
  • Functions have no side effects.
  • Application components are decopled and don't break eachother.
  • If you want to make a change, you just do it without the fear of breaking something else, as the compiler will guide you through all the code that needs to be updated to accomodate your change without breaking anything else.
  • Error messages are informative and you immediately know what to do.
  • No more undefined runtime errors. Everything is always defined.
  • Application flow is easy to follow in code.
  • Elm developers are friendly, helpful, and always excited to talk about Elm.

My Elm experience <3

  • After React, this was the 2nd web framework I had ever interacted with at the time, in 2021.
  • At university I had mostly used imperative languages like Java, C, C++, PHP;
  • Thinking in a functional style was not easy at first, but shortly became natural and intuitive to me.
  • It took me 7 days to learn the Elm basics and build a small test app;
  • After that, I jumped straight into a real-world production project, where I successfully deployed over 100 pull requests, and many thousand lines of code.

The elm tree is also a wonderful tree.

image

Initial setup

Install dependencies:

npm install

Starting live server

Run the start script:

npm start

It will open the app in the browser and watch for code changes.

Running unit tests

Run the test script:

npm run test

It will run everything in the tests folder.

Before commiting

Run the review script:

npm run review

It will review the code using the rules from ReviewConfig.elm file.

Run te format script:

npm run format

About

Sharpen your functional programming skills with Werner Hett's Ninety-nine Problems, adapted to Elm by John Crane, solved and presented in an interactive fashion by me..

Topics

Resources

Stars

Watchers

Forks

Languages