Date: 2020-04-07
- Bump Promesa version from 1.9.0 to 5.1.0
Date: 2020-02-21
- Change exception monad to catch all throwables instead of exceptions only
Date: 2020-02-11
- gets can receive monad context as argument
Date: 2019-10-02
- Fix typo in cats/monad/state.clj: -repr should return a string, not a regex
Date: 2018-11-07
- Introduce haskell-inspired do-let macro
Date: 2018-10-31
- Override put,get,swap to receive monad context
Date: 2018-08-29
- Add state monad implementation
Date: 2018-10-05
- Implement Semigroup for Either
Date: 2018-01-11
- Fix some issues with wrong handling of dynamic context.
- Convert some functions to macros for delay args evaluation.
Date: 2017-04-20
- Make cats work together with core.match for some types.
- Convert
when
and unless
to macros. - Update promesa dependency.
Date: 2016-07-28
This version intend to clean the library from unused and out of context stuff
and leave only the useful abstractions. This is a list of main changes (mostly
breaking):
- Removed support for monad transformers. They add too many complex to the
implementation but in return adds very low value in context of dynamic
languages as is clojure.
- Removed state, writer, reader and continuation monad namespaces. They are not
very useful in clojure so having them without any particular usefulness it not
make sense.
- Removed
cats.applicative
namespace because it is too many opinionated and
not really useful in the real world. The use case vary depending on when that
abstraction is used so we encourage users to define their own abstraction with
specific behavior for their application. - Removed CRDT's labs. It was an experiment and the final sensacion is that is
not very useful and in most circumstances the users defines their own
datastructures instead of rely on ones from third party packages. So,
maintaining them in the code base also does not make sense
- Removed
lens
and traversals
namespaces. The first one becomes very useful
and is properly externalized as separated package. The last one, seems
like it is not very useful and seems out of context of cats library. If anyone
is interested in maintaining it, the code can be extracted from the previos
git revisions and released as separated library. - Move
cats.labs.sugar
into cats.core
namespace (cats.labs.sugar
ns is
removed)
And a list of other changes and contributions:
- PersistentListq support in sequence context (@muhuk)
- Rewrite
cats.labs.channel
integration with core.async combinators
(@yanatan16) - Add
cats.builtin.lazy-sequence-context
(@muhuk) - Fix bug in sequence context's fapply implementation (@muhuk)
- Performance improvements in sequence context implementation (@muhuk)
- Add
cats.monad.either/try-either
macro for capturing exceptions as left, values
as right (@shmish111) - Move
promesa.monad
namespace under cats.labs.promise
ns.
Date: 2015-12-16
- Fix functor implementation for Map.
- Fix key overwritting on lenses focus/foci types.
- Add utility functions to validation ns.
Date: 2015-12-01
- Add Bifunctor (@yurrriq)
- Add a macro for lifting functions to applicatives
Date: 2015-11-26
- Add Lenses and Traversals.
- Add timeout support for manifold deferred context.
- Improved mapseq implementation.
- Added function monoid and monad.
- Implement functor, monad and foldable for any kind of map.
- Make all types printable.
- Add monadzero and monadplus for either and either-t.
- Add
cats.labs.sugar
namespace with sugar syntax macros
(documentation is very welcome). - Update core.async version to 0.2.374
- Update cljs compiler version to 0.7.170
- Add basic support for crdt's under labs namespace.
(documentation is missing).
- Add test.check generators integration and property constructors
Date: 2015-09-17
- The context doesn't need to be a monad anymore.
- Fix Foldable implementation for clojure builtin collections.
- Add additional arity to
cats.core/mempty
function, that allows provide a context
instead of resolving it. - Sorted map is now also implements monoid.
- Add
cats.labs
namespace for make room for previously removed reader, writer,
state and continuation monads. - Add core.async channel monad/applicative under
cats.labs.channel
namespace. - Add manifold deferred monad/applicative under
cats.labs.manifold
namespace. - Add applicative-do (with
alet
macro) syntax. You can read more about that in
haskell wiki and
pull request. - Add foldm implementation to
cats.core
namespace. - Add a bunch of monoids:
all
, any
, sum
, prod
, pair
and string
. - Add a Traversable
protocol and implementations for vector, sequence, pair, maybe, either and validation.
- Add traverse function to
cats.core
namespace.
- Revisit monad-transformers abstraction removing useless protocol methods:
base
and inner
are no longer part of the MonadTrans
protocol. - The protocols methods are all renamed to
-name
for consistency with cljs style to
name internal functions. - The
Context
protocol has been renamed to Contextual
, and Context
is now a protocol
used to mark context instances and resolve their priority.
Date: 2015-08-02
- Remove src/user.clj that causes some problems.
Date: 2015-08-02
- Foldable abstraction.
- Curry facilities.
- Major code cleaning.
- Context management moved into its own namespace.
- A lot of performance improvements (removing unnecessary
function call forwarding).
- Start using the clojurescript 1.7.28.
Date: 2015-07-13
- Set default and required clojure version to 1.7.0.
- Replace cljx with clojure 1.7 conditional reader.
- Add more util functions for treat for maybe monad types.
- Add more util functions for treat for either monad types.
- Add semigroup and monoid abstractions.
- Add validation applicative (similar to either).
- Minor performance improvements.
- Fix inconsistences between fmap / fapply public functions
and its haskell-style aliases.
- Add more documentation.
- Deprecate the state, reader, writer and continuation
monads. They will be moved to a separated library for
future version.
- Remove already deprecated
from-either
function.
Date: 2015-03-25
- The exception monad now raises a exception when you deref a failure instance.
This will allow easy use of monadic api from libraries or applications that
does not use monads.
- The
cats.monad.exception/failure
function now coerce all input that not
extends from exception to exception type (using ex-info
clojure function). - Add channel monad using core.async channels abstraction (as separated repository)
This make easy treat channels as monads and using them in monadic compositions.
- Remove mlet-with macro (bacause it sintax is ugly and with-monad usage is preferable)
- Remove undocumented errlet macro.
Date: 2015-03-14
- Improve cljx build process.
Date: 2015-03-14
- Improvements on project.clj.
Date: 2015-02-08
- Empty version, only exists because clojars does not
allow remove wrong uploaded versions.
Date: 2015-02-08
- Dependencies versions update.
- Add new arity to from-maybe function for default value.
- Update required clojurescript version to 0.0-2760.
- Use speclj for tests.
- Add IDeref implementation to either, maybe, identity and exception monads types.
- Remove maybe useless lazy monad.
Date: 2014-10-26
- Major api redesign.
- Split monad definition from data type.
- mlet macro is now not recursive.
- New monads: lazy, exception.
- Monad transformers.
Date: 2014-07-09
Can you improve this documentation? These fine people already did:
Andrey Antukh, Alejandro Gómez, ericvm, Adam Harper, Caio Oliveira, sovelten, Klaus Harbo & Victor CarvalhoEdit on GitHub