Lambda Graph Generator

Author: Sam Summary: Lambda Graph Generator: sparking an understanding of Lambda Calculus through geometric rather than algebraic representation. Abstract: The Lambda Graph Generator is a tool for visualizing the structure of programs written in Lambda Calculus. By translating the textual representation of a program into geometric relationships, the Lambda Graph Generator takes advantage of the brain's natural strengths in vision to communicate this abstract programming language more clearly. It is intended primarily as an educational tool to introduce students to the Lambda Calculus in an alternative format, and display the inner workings of Lambda Calculus programs in a manner that is more amenable to parallel reasoning than linear sequences of text. Repository: https://github.com/scgruber/Lambda-Graph-Generator

View the Lambda Graph Generator

The Lambda Graph Generator is a tool for visualizing the structure of programs written in Lambda Calculus. Traditionally, Lambda Calculus is presented in text-based algebraic notation, often looking something like this:

(λmnf.n(mf))(λfx.f(fx))(λfx.fx)

But what if there was a better way to present this? The Lambda Graph Generator produces geometric constructions which communicate the structure of Lambda Calculus expressions geometrically, rather than algebraically.

In Lambda Calculus, everything is an abstraction, similar to a function in other programming languages, and the Generator represents these abstractions as double rings. On the edge of these rings are hollow circles, representing inputs to the abstraction, and a solid black circle which represents its output. Within the abstraction, paths drawn between the element track the flow of data through the expression. Where paths meet, the path which terminates is applied into the other as an input, allowing us to model complex operations.

mult_1_2

By translating the textual representation of a program into geometric relationships, the Lambda Graph Generator takes advantage of the brain’s natural strengths in vision to communicate this abstract programming language more clearly. The brain has evolved to be very good at recognizing geometric and spatial patterns and isn’t quite so good at working with other types of patterns, such as those present in a textual form of program code. Exploring the language of Lambda Calculus in this way affords us a method to teach it to people who may have a difficult time approaching the byzantine algebraic notation that is currently used for Lambda Calculus, but are very comfortable with geometric reasoning.

As the Lambda Graph Generator is intended primarily as a tool to present Lambda Calculus in an alternative form, I intended to offer it as a supplemental learning tool to instructors in the School of Computer Science at Carnegie Mellon for the use of their students.

This entry was posted in final-project, project-4 on by .

About Sam

Sam Gruber is a junior studying Computer Science and Architecture and the President of the CMU Computer Club. His interests include machine intelligence, realtime graphics demos, and interface design, and he has been sighted both playing in and running tabletop roleplaying games. Sam has experience working with PHP, HTML/CSS, Javascript/Node.js, SML, C/C++ and Linux. He also dabbles in Ruby, Processing, Cinder, Python, and pretty much anything that seems interesting.

Leave a Reply