All user visible changes to this project will be documented in this file. This project adheres to Semantic Versioning, as described for Rust libraries in RFC #1105
- bump versions of dependencies
- redesign trait
BetaReduce
to support inspections - remove unwrap_XXX methods from
Term
- no longer reexport minor types and functions:
use lamcal::environment::{bind, Binding};
instead ofuse lamcal::{bind, Binding};
use lamcal::parser::{hint, parse_tokens, pos, tokenize, tokenize_str, CharPosition, Hint, ParseErrorKind, Token};
instead ofuse lamcal::{hint, parse_tokens, pos, tokenize, tokenize_str, CharPosition, Hint, ParseErrorKind, Token};
- introduce inspections for evaluation and reduction (see documentation of
inspect
module) - refactor all methods to use trampolining instead of recursion to support handling of huge terms without stack overflow
- missing parenthesis in implementation of Display for Term
- rename
Var
struct toVarName
- allow uppercase letters in variable names
- allow variable names starting with digits
- provide
Environment
to hold bindings ofTerm
s to names - add
bind!
andbinds!
macros for convenient definition of bindings - add
expand
andeval
functions to evaluate lambda terms in an environment - add
Term::free_vars
method to determine all free variables in a term - add predefined lambda combinators (see
combinator
module) - add Church encoding for boolean and numerals (see
church_encoded
module)
- wrong behavior of alpha-conversion
- fix bug in
Term::is_beta_redex
andTerm::is_beta_normal
functions - required parenthesis omitted in display string of
Term
- macro app! needs to many manually import required elements
- export
Hint
struct
- Add
HybridNormalOrder
beta-reduction strategy - Add
HybridHeadSpine
beta-reduction strategy - Add
HybridApplicativeOrder
beta-reduction strategy - Add
ApplicativeOrder
beta-reduction strategy - Add
CallByValue
beta-reduction strategy
- Improve documentation of reduction strategies
- Add homepage link to Cargo.toml
- First release