# Change Log All user visible changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/), as described for Rust libraries in [RFC #1105](https://github.com/rust-lang/rfcs/blob/master/text/1105-api-evolution.md) ## 0.4.0 : 2018-10-06 : No stack overflow and inspected ### Breaking changes * 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 of `use lamcal::{bind, Binding};`
`use lamcal::parser::{hint, parse_tokens, pos, tokenize, tokenize_str, CharPosition, Hint, ParseErrorKind, Token};` instead of `use lamcal::{hint, parse_tokens, pos, tokenize, tokenize_str, CharPosition, Hint, ParseErrorKind, Token};`
### Features * 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 ### Bug Fixes * missing parenthesis in implementation of Display for Term ## 0.3.0 : 2018-09-08 : Beautiful environment ### Breaking changes * rename `Var` struct to `VarName` ### Features * allow uppercase letters in variable names * allow variable names starting with digits * provide `Environment` to hold bindings of `Term`s to names * add `bind!` and `binds!` macros for convenient definition of bindings * add `expand` and `eval` 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) ### Bug Fixes * wrong behavior of alpha-conversion * fix bug in `Term::is_beta_redex` and `Term::is_beta_normal` functions * required parenthesis omitted in display string of `Term` * macro app! needs to many manually import required elements ## 0.2.0 : 2018-08-26 : More reduction strategies ### Bug Fixes * export `Hint` struct ### Features * 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 ### Documentation * Improve documentation of reduction strategies ## 0.1.1 : 2018-08-25 : Documentation * Add homepage link to Cargo.toml ## 0.1.0 : 2018-08-25 : Newborn * First release