# Changelog The library uses [semantic versions](http://semver.org) to identify stable releases. ## Release 4.6.x **Features** * [#68](https://github.com/fogfish/datum/issues/68): Implements generic representations * Support product lenses for records (`lens:p/1`). ## Release 4.5.x **Features** * [#54](https://github.com/fogfish/datum/issues/54): Implements pattern matching within do-notation * Add typecast utility for scalar types. * Support MFA generator for streams * implements lens isomorphism (`lens:iso/2`, `lens:iso/4`) and product lens (`lens:p/1`). **Improvements** * Support lists comprehension at do-notation ## Release 4.4.0 **Features** * Implements basic lenses: identity (`lens:id/0`), constant (`lens:const/1`) * Implements binary lenses: head of binary (`lens:hbits/1`), tail of binary (`lens:tbits/`), bit focus (`lens:bits/2`) ## Release 4.3.2 **Features** * [#30](https://github.com/fogfish/datum/issues/30) Define a conditional fail (`require`) that conditionally lifts a value either to object or error of category * [#29](https://github.com/fogfish/datum/issues/29) Support category transformers as part of nested expressions * Define a generic operators to modify monad context or execute side-effect **Improvements** * Fix various of compilation errors of function compositions * Improve test coverage of parse transforms * Support list comprehensions and list operators as part of function composition * Export `datum:lens()` data type ## Release 4.3.0 **Features** * [#20](https://github.com/fogfish/datum/issues/20) New category `undefined` * [#25](https://github.com/fogfish/datum/issues/25) Product lens combinator `lens:p(...)` to spawn multiple fields into abstract view * [#19](https://github.com/fogfish/datum/issues/19) Macros to pattern match empty data structures (see `datum.hrl`) * [#22](https://github.com/fogfish/datum/issues/22) Define new lens `lens:require/1`, `lens:defined/0` to support development of unit testing (validate nested structures using lenses) **Improvements** * Improve interface semantic, introduce `lens:map/3` function instead of `lens:apply/3` * Re-implement lens isomorphism feature using product lens * Update documentations and add examples about lenses * Use `option` data type to warp lens output ## Release 4.2.x Data structure isomorphism with lenses ## Release 4.1.x Update interface(s) documentation ## Release 4.0.x Re-implement monads through Kleisli category ## Release 3.7.x Introduce category pattern ## Release 3.4.x Improve monads for usage in production ## Release 3.3.x Van Laahorven lenses and monads ## Release 2.7.x Enhance pure functional data-types with abstract interfaces such Foldable, Collections, etc ## Reelase 0.9.x Implement pure functional data-types: trees, queues, streams, etc