Inspiration
When arriving to Imperial, both of us had no idea that functional programming existed, let alone programming in it! So we set out in making a low-code solution to introduce programming novices about the main features of functional programming: map, filter and transform!
What it does
The learners are introduced to functional programming concepts one by one, through a series of fun problems.. Using drag and drop nodes, they can construct a pipeline that allows them to transform data from an input towards a desired output, all whilst playing with types and functions.
How we built it
We used Next.js as the framework to make this application, where we run the project into different pages with all the different problems.
Challenges we ran into
Making a data structure that effectively replicated functional programming was akin to making your own programming language - so we spent a long time designing (and fixing) our data structures so that they could support the operations we wanted to showcase.
Accomplishments that we're proud of
We are proud to present a tool that fully functions end-to-end, allowing users to verify if they got the correct solution and build their very own solutions to our tasks. The UI/UX is intuitive providing afluid experience empowering learning.
What we learned
We learnt that even the simplest of ideas can become very complex, very quickly. There are some bad practices employed to save on time, which backfired later on as we started wondering what was going wrong. In particular, going slowly to design a solid intermediate data structure goes a long way!
What's next for Funprog
A lot of ideas! We wanted to make fully generic maps and filters that users could drop in their own functions to map over iterables, and wanted to implement recursion through a similar concept. In the end, we settled for a product that we are proud to present, and that can be used out-of-the-box to educate everyone about Functional Programming!
Built With
- next
- react
- typescript
Log in or sign up for Devpost to join the conversation.