pureƒn

 - [pyoor] [fuhn]

This overview provides a brief explanation of pureƒn for those already familiar with the Lambda Calculus, Combinatory Logic and Functional Programming.

I created pureƒn in an effort to learn the workings of the Lambda Calculus and intend for it to be used by people wanting to learn and experience some of the fundamental principles of computer science in an interactive manner with minimal notation complexity.

pureƒn is a programming environment based on the functionality of the Lambda Calculus with a simplified notation. pureƒn allows for the definition, application and reduction of functional abstractions. The notation and syntax are minimal yet sufficient to allow the underlying concepts to be easily understood.

Here are some examples of a few abstraction definitions for the S, K and I combinators in a live web based interpreter. You can play around with it yourself by typing your own expressions in the window here and below:

The pureƒn interpreter supports only the following syntax and basic functionality:

Abstract function definitions: [ ]'s are used to contain the abstraction terms which can be positive or negative integers, abstractions or symbols representing abstractions. Negative integers are placed last in decreasing order of magnitude.

Application order: ( )'s modify application order. ()'s are not required for normal order such as S K K which is interpreted as ((S K) K). A different order can be defined as needed such as S (K K).

Symbol assignment: The = sign is used to assign a symbol to represent an abstraction.

Equivalence testing: The keyword 'is' can be used to test if two expressions evaluate to the same normal form.

Comments: Anything after the ; character in a line is ignored.

Evaluation: The interpreter compiles an abstraction into a function and performs application and reduction to normal form if a normal form exists. Strict evaluation is used. Evaluation of an abstraction or tuple can be delayed until an argument is received if a negative term is placed in head position. Reduction steps are not displayed.

Here are some more combinator, Church Numeral, and low level function examples:

Send questions or comments to dan@salmonsen.org