New Educational Game for Functional Programming

I’m excited to share a demo of a new educational game, entirely created in Elm. This game is designed to teach children functional programming through a visual language called Link Lang (implemented in the game). The core idea is to get folks writing and using their own functions as quickly as possible, making coding engaging and accessible.

  • In the game, learners program a robot to solve puzzles and collect energy cells, while defining their own functions in a visual editor.
  • The ambition is to introduce functional programming to young learners.
  • Visual Language - Link Lang: Simplifies coding concepts, allowing kids to visually manipulate and understand functional programming constructs. It has basic types, type inference, function calling, etc.

I am trying to figure out what to prioritize next, and would really appreciate any advice on the following:

  • Game Design: Anything feel off or confusing with the UI, errors, language, or concepts?
  • Learning Curve: Is there a point that feels like too big of a jump in difficulty? Or anything that feels too slow? Is adding more similar levels a net negative or positive?
  • Future Directions: What additional features or concepts would you like to see? How can the game be further refined to better serve its educational purpose?
Spoilers - Full Game playthrough

Recording of me doing the levels (from an earlier version). Ideally you would try each level first, though :stuck_out_tongue:.

Full Game playthrough

Your advice will guide the development process as I prepare for a broader release. Thank you for your support and I look forward to your insights!


This looks really nice. Well done. Great too see educational games like this.

I played it a couple of times, here is my feedback.

Defining functions is confusing. If you dont read the instructions carefuly. which I didn’t on purpose. It is very hard to figure out how to define a function. I had to reset the game an read the tutorial with more attention. I think that being able to do figure out things without reading a tutorial carefuly is important.

When defining the function it is possible to miss the () when selecting. Is this intented for later? You get a return type error.

The two buttons next to play (reset and back) are unclear on what they do, a hover or label would be great. I figured out what they do later, but should be clear much earlier e.g. reset code and remove step.

When resetting the robot doesn’t reset. It should probably reset along with the code. As your code will need to adapt with the new state of the robot, which makes learning by trying and fixing harder.

I would like to see what a function does after defining it. i.e. click on it to see the code that I saw when creating it.

I can put more steps in the editor than needed. As soon as the robot hits the battery, the level is complete, ignoring the extra steps. I thinks this can lead to people spamming the level.

I never used the negate to complete the level, I just used turnRight three times. Maybe there should be a check that you actually used the intented introduced concept.

In my second playthrough the game didn’t work as intented. After hitting start over. I didn’t allow me to move levels. I had to refresh the page.

I like that the game moved slowly, not rushing into teaching or using function arguments yet.