dfunc 0.5.2
dfunc: ^0.5.2 copied to clipboard

Dart native js
Flutter Android iOS web

Functional batteries for Dart. Implementation of Either, Optional etc.

Functional batteries for Dart programming language.

Provides implementation of Optional, Either and other types + some helper functions.

Usage #

A simple usage example:

import 'package:built_value/built_value.dart';
import 'package:dfunc/dfunc.dart';

part 'main.g.dart';

void main() {
  final items = ['a', 'b', 'c'];
  print('mapped: ${mapIndexed((i, e) => '$e$i', items)}');

  // Sealed classes generation:

  final item = Base.item1((b) => b..text = 'TEST');
  item.fold((item) => print(item.text), (_) => print('2')); // prints TEST

  final state = State.state2();
  state.fold(
    (_) => print('1'),
    (_) => print('2'),
    (_) => print('3'),
  ); // prints 2

  // Optional

  final optional = Optional.of('test');
  optional.isEmpty() == false;
  optional.getOrNull() == 'test';

  // Either

  final either = Either<Exception, String>.right('test');
  either.isRight() == true;
  either.map((s) => s.toUpperCase()).right == 'TEST';
}

class Base extends Coproduct2<Item1, Item2> {
  Base.item1([Function(Item1Builder b) updates]) : super.item1(Item1(updates));

  const Base.item2() : super.item2(const Item2());
}

/// Can be used together with built_value library to create
/// immutable cases.
abstract class Item1 implements Built<Item1, Item1Builder> {
  factory Item1([Function(Item1Builder b) updates]) = _$Item1;

  Item1._();

  String get text;
}

class Item2 {
  const Item2();
}

class State extends Coproduct3<State1, State2, State3> {
  const State.state1() : super.item1(const State1());

  const State.state2() : super.item2(const State2());

  const State.state3() : super.item3(const State3());
}

class State1 {
  const State1();
}

class State2 {
  const State2();
}

class State3 {
  const State3();
}

Features and bugs #

Please file feature requests and bugs at the issue tracker.

3
likes
100
pub points
71%
popularity

Publisher

ookamikb.dev

Functional batteries for Dart. Implementation of Either, Optional etc.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD (LICENSE)

More

Packages that depend on dfunc