fpkit 0.1.0 copy "fpkit: ^0.1.0" to clipboard
fpkit: ^0.1.0 copied to clipboard

Ultimate functional programming toolkit for Dart 3+ & Flutter. Option, Either, Result, Validation, IO, Task, TaskEither, Reader, Writer, State, function combinators and immutable helpers. A modern suc [...]

example/main.dart

import 'package:fpkit/fpkit.dart';

Either<String, int> parseAge(String s) {
  final v = int.tryParse(s);
  return v == null ? left('bad age: $s') : right(v);
}

Future<void> main() async {
  // Option
  final name = Option<String>.fromNullable(null).getOrElse(() => 'guest');
  print('name=$name');

  // Either pipeline
  final age = parseAge('42').map((n) => n + 1).getOrElse((_) => 0);
  print('age=$age');

  // Validation accumulates
  final validated = Validation<String, int>.valid(20).zipWith(
    Validation<String, int>.invalid('must be even'),
    (a, b) => a + b,
  );
  print('validated=$validated');

  // TaskEither
  final task = TaskEither<String, int>.tryCatch(
    () async => 42,
    (e, _) => e.toString(),
  ).map((n) => n * 2);
  print('task=${await task.run()}');

  // Reader
  final greeting = Reader<Map<String, String>, String>(
    (env) => 'Hello ${env['name']}',
  );
  print(greeting.run({'name': 'Ada'}));

  // State
  final counter = State<int, int>((s) => (s + 1, s));
  print('state=${counter.run(0)}');

  // IList + pipe
  final total = IList([1, 2, 3, 4])
      .filter((n) => n.isEven)
      .map((n) => n * 10)
      .fold(0, (a, b) => a + b)
      .pipe((n) => 'total=$n');
  print(total);
}
1
likes
150
points
309
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Ultimate functional programming toolkit for Dart 3+ & Flutter. Option, Either, Result, Validation, IO, Task, TaskEither, Reader, Writer, State, function combinators and immutable helpers. A modern successor to dartz / fpdart built on sealed classes and pattern matching.

Repository (GitHub)
View/report issues

Topics

#functional #fp #monad #either #option

License

MIT (license)

More

Packages that depend on fpkit