Skip to content

Add 'initialized' monad blocks #8

Description

@tehsenaus

It's possible for monad expressions to have an indeterminate type. E.g:

do {
  if ( X ) << Q(...);
  return "DONE";
}

...evaluates to a promise if X is true, but evaluates to a raw value if X is false.

A workaround for this is to start your monad block with an empty promise:

do { << Q();
  if ( X ) << Q(...);
  return "DONE";
}

...now it will always evaluate to a promise.

This enhancement adds sugar for this, like so:

do (Q) {
  if ( X ) << Q(...);
  return "DONE";
}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions