Nick Janetakis

Crowd-sourcing how to traverse a nested data structure in different programming languages

we now have 85+ solutions across 35+ languages

I had a use case come up while developing an Elixir application that involved wanting to perform a nested loop while mutating 2 counters and a map. The repo has a full description of the problem.

I was able to solve it using Elixir, but I’m new to functional programming, so it took a bit of elbow grease and assistance to get a working solution.

After talking over the problem on IRC, José came up with a wonderful idea: to tweet out an open request to all developers and see how the community would solve the problem using their language of choice.

Edit October 10, 2022: The tweet has since been deleted, it originally said:

Developers from all programming languages, I would appreciate your contribution to this problem: - PRs welcome!

Mutability makes this easier. Therefore I am also curious about how different functional programming languages tackle this. Please RT!

— José Valim (@josevalim) April 7, 2021

Within 24 hours there were just under 100 submissions across 35 languages! Everything from APL (which looks like alien hieroglyphics mixed with encrypted NES cheat codes) to Wenyan (which is an Ancient Chinese programming language).

If you’d like to submit a solution, please head over to the repo and check out the README. Multiple submissions for a single language are OK as long as your implementation is different from what already exists for that language.

Edit October 10, 2022: The repo is now archived and new solutions are no longer being accepted.


Sign in or Join to comment or subscribe

2022-10-10T11:54:18Z ago

None of the links on this page are working

Jerod Santo

Jerod Santo

Omaha, Nebraska

Jerod co-hosts The Changelog, crashes JS Party, and takes out the trash (his old code) once in awhile.

2022-10-10T14:39:31Z ago

Hmm, it appears José has since renamed the repo to: nested-map-reduce-traversal

I’ll update the post to point to the rename ✊

  0:00 / 0:00