maybe.h

Exposes functions to handle the maybe data-type, which can represent either a value or nothing.

  • Author: Edward Jones
  • Date: 2021-09-17

Source file

dest_maybe

Destroy a maybe-type object. Any stored data must be destroyed separately.

  • Param m: Pointer to a meybe object to destroy
  • Param ed: Element destructor to be called on the just field if the constructor permits
void dest_maybe(Maybe* m, Destructor ed);

fmap_maybe

Apply a function to the stored data in the maybe and output a new maybe object with the new value.

  • Param mo: Ouptut maybe object. Should be an uninitialised maybe-type pointer.
  • Param mi: Input maybe object which will have f applied to it
  • Param f: Function to apply to any data inside mi
void fmap_maybe(Maybe* restrict mo, Maybe* restrict mi, Fmap f);

make_maybe_just

Construct a maybe-type object with the just constructor.

  • Param m: Pointer to a location to initialise
  • Param data: Data to store in the just
void make_maybe_just(Maybe* m, void* data);

make_maybe_nothing

Construct a maybe-type object with the nothing constructor.

  • Param m: Pointer to a location to initialise
void make_maybe_nothing(Maybe* m);

succ_maybe

Check whether a maybe-type object represents a success.

  • Param m: Pointer to a maybe object

Returns: Returns true if the constructor of m is Just, otherwise false

bool succ_maybe(Maybe* m) __attribute__((pure));