At some point in my CS career i distinctly remember a "flip" i had in how i thought. The revelation was the fact that complexity and more generally information has an infinite number of ways of being represented. Somehow by stating that explicitly i was able to tackle new problems by first asking myself "is there a better model for this that expresses the same information and obeys similar constraints as what i am modeling". I started taking my Calculus notes in "code-like" ways, for example, using while loops and if's, adding arrows and other weird non-math syntax. To me they were more efficient ways of learning and remembering the information<p>New ways of modeling the same information always excite me. This is fantastic work.
This is a nice find but it is very old news.<p>In mathematics (and mathematical physics), these are called <i>string diagrams</i>.<p>The short and simplified version of the story:<p>The (typed) lambda calculus 'corresponds' to <i>cartesian closed categories</i>. Such CCCs are a special case of <i>monoidal categories</i>. String diagrams are a notation for morphisms in monoidal categories.<p>To get you started, here's a related blog post on the n-category café<p><a href="https://golem.ph.utexas.edu/category/2006/08/categorifying_cccs_seeing_comp.html" rel="nofollow">https://golem.ph.utexas.edu/category/2006/08/categorifying_c...</a>
I'm a big fan of this idea! An automatated tool based on this would be really great for teaching the concepts of lambda calculus - similarly to how Lambda Bubble Pop <a href="http://chrisuehlinger.com/LambdaBubblePop/" rel="nofollow">http://chrisuehlinger.com/LambdaBubblePop/</a> can give you really strongs intuitions about eager & lazy evaluation.<p>The author gave a talk on this & related work at the excellent Deconstruct conference, definitely recommend it if you're into notations! <a href="https://www.deconstructconf.com/2017/chelsea-voss-programming-languages-as-notations" rel="nofollow">https://www.deconstructconf.com/2017/chelsea-voss-programmin...</a>
Reminds me of <a href="http://graphicallinearalgebra.net" rel="nofollow">http://graphicallinearalgebra.net</a> which is also super cool.
Lambda Diagrams [1] are a more abstract, less circuit-like, notation.<p>[1] <a href="http://tromp.github.io/cl/diagrams.html" rel="nofollow">http://tromp.github.io/cl/diagrams.html</a>
It's not that similar, but this somewhat reminded me of Alligator eggs[0]<p>[0] <a href="http://worrydream.com/AlligatorEggs/" rel="nofollow">http://worrydream.com/AlligatorEggs/</a>
I got a vague association to Penrose’s graphical tensor notation <a href="https://en.m.wikipedia.org/wiki/Penrose_graphical_notation" rel="nofollow">https://en.m.wikipedia.org/wiki/Penrose_graphical_notation</a><p>There are a lot of examples in modern physics where people have come up with graphical notations to handle the kind of recursive complexity found in the article. There’s a lot of low-hanging fruit to be discovered in the last century of physics. Especially now that Machine Learning is all the buzz about tensors.
I'd strongly recommend comparing that notation to this notation:<p><a href="https://en.wikipedia.org/wiki/Cirquent_calculus" rel="nofollow">https://en.wikipedia.org/wiki/Cirquent_calculus</a>