midas/task

Types

A task is an effect that returns a result. All errors in a task are snag Errors.

pub type Task(return, reason, key) =
  effect.Effect(Result(return, reason), key)

Values

pub fn abort(reason: a) -> effect.Effect(Result(b, a), c)

A task is done with an error

pub fn bundle(
  m: String,
  f: String,
) -> effect.Effect(Result(String, snag.Snag), a)
pub fn do(
  eff: effect.Effect(Result(a, b), c),
  next: fn(a) -> effect.Effect(Result(d, b), c),
) -> effect.Effect(Result(d, b), c)

Compose a task with a function that returns a task.

pub fn done(value: a) -> effect.Effect(Result(a, b), c)

A task has completed successfully

pub fn each(
  items: List(a),
  run: fn(a) -> effect.Effect(Result(b, c), d),
) -> effect.Effect(Result(List(b), c), d)
pub fn export_jwk(
  key: a,
) -> effect.Effect(Result(json.Json, snag.Snag), a)
pub fn fetch(
  request: request.Request(BitArray),
) -> effect.Effect(
  Result(response.Response(BitArray), snag.Snag),
  a,
)
pub fn follow(
  uri: uri.Uri,
) -> effect.Effect(Result(uri.Uri, snag.Snag), a)
pub fn generate_keypair(
  algorithm: effect.KeyPairAlgorithm,
  extractable: Bool,
  usages: List(effect.KeyUsage),
) -> effect.Effect(Result(effect.KeyPair(a), snag.Snag), a)
pub fn hash(
  algorithm: effect.HashAlgorithm,
  bytes: BitArray,
) -> effect.Effect(Result(BitArray, snag.Snag), a)
pub fn list(
  file: String,
) -> effect.Effect(Result(List(String), snag.Snag), a)
pub fn log(
  message: String,
) -> effect.Effect(Result(Nil, snag.Snag), a)
pub fn proxy(
  task: effect.Effect(a, b),
  scheme: http.Scheme,
  host: String,
  port: option.Option(Int),
  prefix: String,
) -> effect.Effect(a, b)
pub fn read(
  file: String,
) -> effect.Effect(Result(BitArray, snag.Snag), a)
pub fn sequential(
  tasks: List(effect.Effect(Result(a, b), c)),
) -> effect.Effect(Result(List(a), b), c)
pub fn serve(
  port: option.Option(Int),
  handle: fn(request.Request(BitArray)) -> response.Response(
    BitArray,
  ),
) -> effect.Effect(Result(Nil, snag.Snag), a)
pub fn sign(
  algorithm: effect.SignAlgorithm,
  key: a,
  data: BitArray,
) -> effect.Effect(Result(BitArray, snag.Snag), a)
pub fn strong_random(
  length: Int,
) -> effect.Effect(Result(BitArray, snag.Snag), a)
pub fn try(
  result: Result(a, b),
  then: fn(a) -> effect.Effect(Result(c, b), d),
) -> effect.Effect(Result(c, b), d)

Work with results that are not effectful.

pub fn unix_now() -> effect.Effect(Result(Int, a), b)
pub fn visit(
  message: uri.Uri,
) -> effect.Effect(Result(Nil, snag.Snag), a)
pub fn write(
  file: String,
  bytes: BitArray,
) -> effect.Effect(Result(Nil, snag.Snag), a)
pub fn zip(
  message: List(#(String, BitArray)),
) -> effect.Effect(Result(BitArray, snag.Snag), a)
Search Document