lambda_calculus 1.3.0 lambda_calculus: ^1.3.0 copied to clipboard
A library for lambda calculus. It supports parsing and evaluating lambda terms with different strategies. It also has preliminary support for type inference.
1.3.0 #
-
Modify the parsing syntax:
- Stop allowing abstractions without delimiters, e.g.
λx x
is not allowed anymore, useλx. x
orλx -> x
instead. - Allow spaces between the lambda symbol and the variable, e.g.
λ x -> x
is now allowed. It was already allowed according to the previous documentation, but the implementation was not consistent. - Allow inner abstractions to be omitted, e.g.
λx. λy. x y
can be written asλx y. x y
. - Stop allowing special depth variables such as
_x1
or_y2
. These underscore variables are not prohibited.
- Stop allowing abstractions without delimiters, e.g.
-
Improve the pretty-printing of
Lambda
to not creating variables with underscores. Instead it will choose appropriate fresh names that are guaranteed to not conflict with existing variables. -
Fix bugs in the parser.
-
Make
LambdaBuilder
andLambda
final. -
More documentation.
1.2.0 #
-
Change the signature of
fmap
so that "non-leaf" callbacks no longer have access to the term itself. This is because previous usage of this term is not consistent. -
Fix the problem where variables with the same name can conflict with each other during evaluation.
-
Better printing format for
LambdaType
. -
Fix typos in documentation.
-
Make
Lambda
final. -
Remove dependency on
dartz
. -
More tests.
1.1.1 #
- Better documentation.
1.1.0 #
- Stop allowing constructing
Lambda
directly, instead, useLambdaBuilder
. - Access constants via
LambdaBuilder.constants
orLambda.constants
. - Fix the problem where the index of a variable is sometimes
null
.
1.0.0 #
- Initial version.