tim-smart / elemental

A toolkit for writing software in dart. Effect-system, dependency management and more!
23 stars 1 forks source link
dart effect-system flutter state-management

A toolkit for writing software in dart

Includes:

Usage

The ZIO<R, E, A> type represents an synchronous or asynchronous operation.

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();

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/.