Last updated:
0 purchases
elemental
A toolkit for writing software in dart
Includes:
ZIO a building block for writing effectful programs. Explore the full API: https://pub.dev/documentation/elemental/latest/elemental/ZIO-class.html
Layer for composing dependencies
nucleus, a simple state and dependency management tool. See more here: https://pub.dev/packages/nucleus
Thanks to the fpdart package https://pub.dev/packages/fpdart:
Option
Either
Immutable data structures, thanks to https://pub.dev/packages/fast_immutable_collections
Usage #
The ZIO<R, E, A> type represents an synchronous or asynchronous operation.
The R generic is for representing the requirements / environment
The E generic is for representing errors
The A generic is for the success type
There are a handful of helpful methods to ease composition!
import 'package:elemental/elemental.dart';
ZIO<NoEnv, Never, String> greeting(String name) => ZIO(() => "Hello $name!")
// Note `ZIO<NoEnv, Never, String>` can be shortened to `IO<String>`.
// Here we create a simple wrapper around `print`
IO<Unit> log(String message) => IO(() => print(message)).asUnit;
// And compose them together!
greeting.tap(log).run();
copied to clipboard
It is worth noting that the above will run synchronously. Only when you start
using Future's in your program, will things run asynchronously.
Layers #
A quick intro to services and layers can be found in example/.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.