LambdaINet: Graphical Interaction Net Evaluator for Optimal Evaluation

[ application, bsd3, program ] [ Propose Tags ]

An experimental evaluator for Interaction Nets that encodes optimal and call-by-need strategies based on Lambdascope, with an interactive graphical interface based on OpenGL and GLFW. See the README in source for more information.

[Skip to Readme]


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 0.1.0, 0.1.1, 0.1.2,,
Dependencies base (>=3 && <5), containers (>=, GLFW (>=, GLFW-task, monad-task, mtl, OpenGL, transformers, vector [details]
License BSD-3-Clause
Maintainer Paul H. Liu <>
Category Application
Home page not available
Uploaded by PaulLiu at 2014-09-02T02:13:04Z
Reverse Dependencies 1 direct, 0 indirect [details]
Executables LambdaINet
Downloads 4652 total (11 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
Last success reported on 2015-05-18 [all 10 reports]

Readme for LambdaINet-

[back to package description]

LambdaINet implements an interaction net based optimal evaluator following
Lambdascope [1], with an interactive graphical interface allowing user to view
and directly manipulate interaction net.

[1] Vincent van Oostrom, Kees-Jan van de Looij, Marijn Zwitserlood,
Lambdascope, Workshop on Algebra and Logic on Programming Systems (ALPS),
Kyoto, April 10th 2004


*   Tue Sep 1  PDT 2014 - New GUI based on GLFW-task, new layout algorithm.
                          bump version to

*   Tue Sep 15 EDT 2009 - fix GUI on OS X; fix glitch when moving nodes. 
                          bump version to 0.1.2.

*   Mon Sep 14 EDT 2009 - fix the bug with app function, bump version to 0.1.1.


After "cabal install", just type "LambdaINet" to start the application.  Once
it starts, press H for help, and ESC to quit. To understand all the operations
in detail, you'll have to read the above mentioned paper by Oostrom et. al.

Currently there is no way to load input programs except modifying the source,
Try src/Main.lhs if you want to change the start-up program, or any of the 
1..9 preset programs.

At this moment, the object language supports lambda expression with recursion,
tuples, and primitives such as numbers, strings and functions. 


The bulk of code was put together in two weeks when I was working on the leak
problem for FRP in 2007. So it was really a rushed job with no guarantee of
correctness, although I tried to stay faithful to the original paper as much as
I could. 

I only did some moderate clean-ups before releasing this application to public,
and the code itself was sparingly documented when it was originally written.
Some parts are probably still buggy, like the translation from net to term;
other parts could use more improvements, like the node positioning and line
layout algorithm. But I decide to release it anyway -- maybe some people some
where will find it useful.


Please forward bug reports or feedbacks to me (Paul Liu at, but
don't hold your hope high on timely bug fixes. 

Help is also needed to develop LambdaINet further, for example, it really needs
a way to read lambda expressions from a separate file or standard input, which
should be a simple feature to add, but alas! I don't have the time in the
nearest future to do this kind of things myself.

Last Modified: Mon Sep 14 EDT 2009 by Paul Liu