fpdart 0.3.0 fpdart: ^0.3.0 copied to clipboard
Functional programming in Dart and Flutter. All the main functional programming types and patterns fully documented, tested, and with examples.
v0.3.0 - 11 October 2022 #
- Inverted
onSome
andonNone
functions parameters inmatch
method ofOption
[⚠️ BREAKING CHANGE] (Read more on why 👉 #56)
/// Everywhere you are using `Option.match` you must change this:
final match = option.match(
(a) => print('Some($a)'),
() => print('None'), // <- `None` second 👎
);
/// to this (invert parameters order):
final match = option.match(
() => print('None'), // <- `None` first 👍
(a) => print('Some($a)'),
);
- Added
traverse
andsequence
methods (#55)traverseList
traverseListWithIndex
sequenceList
traverseListSeq
traverseListWithIndexSeq
sequenceListSeq
/// "a40" is invalid 💥
final inputValues = ["10", "20", "30", "a40"];
/// Verify that all the values can be converted to [int] 🔐
///
/// If **any** of them is invalid, then the result is [None] 🙅♂️
final traverseOption = inputValues.traverseOption(
(a) => Option.tryCatch(
/// If `a` does not contain a valid integer literal a [FormatException] is thrown
() => int.parse(a),
),
);
- Added
bindEither
method inTaskEither
(#58)
/// Chain [Either] to [TaskEither]
TaskEither<String, int> binding =
TaskEither<String, String>.of("String").bindEither(Either.of(20));
- Added
lefts
,rights
, andpartitionEithers
methods toEither
(#57)
final list = [
right<String, int>(1),
right<String, int>(2),
left<String, int>('a'),
left<String, int>('b'),
right<String, int>(3),
];
final result = Either.partitionEithers(list);
expect(result.first, ['a', 'b']);
expect(result.second, [1, 2, 3]);
- Added
bimap
method toEither
,IOEither
, andTuple2
(#57) - Added
mapLeft
method toIOEither
(#57) - Added
fold
method toOption
(same asmatch
) (#56) - Fixed
chainFirst
forEither
,TaskEither
, andIOEither
when chaining on a failure (Left
) (#47) by DevNico 🎉 - Added
const
to all constructors in which it was missing (#59) - Minimum environment dart sdk to
2.17.0
⚠️
environment:
sdk: ">=2.17.0 <3.0.0"
-
Updated README and documentation
-
Testing improvements (internal)
- Added testing utils
- Added Property-based testing using
glados
- Fixed tests for
match()
method by addingfail
in unexpected matched branch
-
Contribution improvements
- Added testing workflow with Github actions (#54)
v0.2.0 - 16 July 2022 #
- Refactoring for mixin breaking change (#42) by TimWhiting 🎉
- Added
chainFirst
method for the following classes (#39)TaskEither
Either
IO
IOEither
State
StateAsync
Reader
v0.1.0 - 17 June 2022 #
v0.0.13 - 26 January 2022 #
- New methods to
TaskEither
,TaskOption
,Either
, andOption
mapLeft
(TaskEither
)bimap
(TaskEither
)toTaskEither
(Either
)toTaskOption
(Option
)
- New Blog posts and tutorials section in
README
- New blog post How to map an Either to a Future in fpdart
v0.0.12 - 24 October 2021 #
- Completed
IORef
type implementation, documentation, and testing- Merged PR (#25) by purplenoodlesoop 🎉
v0.0.11 - 22 September 2021 #
- Fixed major issue in
State
andStateAsync
implementation [BREAKING CHANGE]- Methods
flatMap
,map
,map2
,map3
,ap
,andThen
,call
, andflatten
had an implementation issue that has been now fixed
- Methods
v0.0.10 - 13 August 2021 #
- Released introduction to Practical Functional Programming
- Completed
StateAsync
type implementation, documentation, and testing - Fixed problem with
Alt
typeclass (#21) - Added
call
method to more easily chain functions inMonad
andMonad2
v0.0.9 - 3 August 2021 #
- Released two new tutorials on the
Option
type: - Added
toJson
andfromJson
methods toOption
to usejson_serializable
to convertOption
type to and from Json (using@JsonSerializable
) - Added functional extension methods on
Map
- Added composable
Predicate
type (and&
, or|
, not~
, xor^
) (#18)
v0.0.8 - 13 July 2021 #
- Released Part 3 of Fpdart, Functional Programming in Dart and Flutter
- Added Pure Functional Flutter app example (
pokeapi_functional
) - Added
flatMapTask
andtoTask
methods toIO
to lift and chainIO
withTask
- Added
flatMapTask
andtoTask
methods toIOEither
to lift and chainIOEither
withTaskEither
- Added pattern matching extension methods to
bool
(boolean.dart
) - Added functions to get random
int
,double
, andbool
in a functional way (usingIO
) (random.dart
) - Added functions, extension methods,
Ord
, andEq
instances toDateTime
(date.dart
)
v0.0.7 - 6 July 2021 #
- Released Part 2 of Fpdart, Functional Programming in Dart and Flutter
- Added
Compose
andCompose2
, used to easily compose functions in a chain - Added
curry
anduncurry
extensions on functions up to 5 parameters - Completed
TaskOption
type implementation, documentation, and testing - Expanded documentation and examples
- Added
TaskEither.tryCatchK
andEither.tryCatchK
, by tim-smart (#10, #11) 🎉
v0.0.6 - 29 June 2021 #
- Released Part 1 of Fpdart, Functional Programming in Dart and Flutter
- Added functional extension methods on
Iterable
(List
) - Completed
IOEither
type implementation, documentation, and testing - Added
constF
function - Added
option
andoptionOf
(same as dartz) - Added
Either.right(r)
factory constructor toEither
class (same asEither.of(r)
) (#3) - Added example on reading local file using
TaskEither
(read_write_file) - Added more examples
- Added constant constructors to Eq and variants, by mateusfccp (#4) 🎉
v0.0.5 - 20 June 2021 #
- Completed
State
type implementation, documentation, and testing - Completed
Reader
type implementation, documentation, and testing - Completed
IO
type implementation, documentation, and testing - Merged PR (#2) by jacobaraujo7 🎉
- Added
right
andleft
functions to create instance ofEither
- Added
id
function (same asidentity
) - Added
fold
method toEither
(same asmatch
) - Added
bind
method toEither
(same asflatMap
) - Added
bindFuture
method toEither
, which returnsTaskEither
- Added
v0.0.4 - 15 June 2021 #
- Completed
Unit
type documentation - Completed
Task
type implementation, documentation, and testing - Completed
TaskEither
type implementation, documentation, and testing - Completed implementation, documentation, and testing of
Foldable
instance onOption
andEither
[BREAKING CHANGE] - Completed
Tuple2
type implementation, documentation, and testing [BREAKING CHANGE] - Renamed
fold
method ofFoldable
tofoldLeft
[BREAKING CHANGE] - Updated methods API (
foldRight
,foldLeft
, etc.) ofFoldable
instances (Option
,Either
,Tuple
) [BREAKING CHANGE] IList
not longer working correctly (waiting for a better solution for immutable collections) [BREAKING CHANGE]
v0.0.3 - 13 June 2021 #
- Changed name of type
Maybe
toOption
to be inline with fp-ts, cats, and dartz [BREAKING CHANGE]
v0.0.2 - 13 June 2021 #
First major release:
Types #
Either
IList
Maybe
Reader
State
Task
TaskEither
Tuple
Unit
Typeclasses #
Alt
Applicative
Band
BoundedSemilattice
CommutativeGroup
CommutativeMonoid
CommutativeSemigroup
Eq
Extend
Filterable
Foldable
Functor
Group
Hash
HKT
Monad
Monoid
Order
PartialOrder
Semigroup
Semilattice
Examples #
Either
curry
Maybe
Reader
State
v0.0.1 - 28 May 2021 #
Eq
Hash
PartialOrder