This is my universitary homepage. It will contain university-related content. For private content, see my private homepage.
PRIMREK is a very small non-turing-complete "programming" language defined by Prof. Dr. Fred Kroeger for Informatik IV whose purpose is the definition of primitive-recursive functions. In order to be able to check my homework, and to improve my Haskell skills, I wrote a small PRIMREK interpreter in Haskell. It supports full PRIMREK syntax including syntactic sugar.
It contains a small parser implemented with the monadic parser combination library Parsec and a small Error and State monad based compiler which checks and translates the parsed program structure into the simpler data structure representing primitive-recursive functions, which is then executed.
Recently a new small programming language called Fishkill came to my attention. It aims at being a very minimalistic pure functional language with no datatypes (or only one datatype) which fundamentally relies on pattern matching.
To play around with it, I decided to implement a State Transformer Monad. It went without major surprises and the author decided to publish it as an example here.
Fishkill turned out to be an interesting language to experiment further with implementations of pure functional languages. As such, I decided to implement an experimentation framework in Haskell called Fishbone. It includes a compliant interpreter (with the addition of monadic IO) called "Fishbowl" on top of a compiler to an intermediate language called "Pure". There's the possibility to add other backends, like native code or vm compilers.
The current version includes the Fishbowl interpreter with (optional) lambda lifting, optimization of trivial expressions and implicit memoization ("caching"). It also contains a backend for compiling code into an intermediate independent machine language abstraction, which should eventually lead into a native code compiler for the x86, amd64/emt64t and possible some other platforms.
Here's a silly python script which implements a faculty function entirely with single-argumented lambdas, function application and locally bound variables and nothing else. Yeah, it's just lambda calculus in python.