plymio_funcio v0.1.0 Plymio.Funcio View Source

Plymio.Funcio is a collection of functions for various needs, especially enumerables, including mapping the elements concurrently in separate tasks.

It was written as a support package for the Plymio and Harnais family of packages but all of the functions are general purpose.

Documentation Terms

In the documentation below these terms, usually in italics, are used to mean the same thing.

enum

An enum is an ernumerable e.g. List, Map, Stream, etc.

opts and opzioni

An opts is a Keyword list. An opzioni is a list of opts.

map/1

A map/1 is zero, one or more arity 1 functions.

Multiple functions are usually reduced (by Plymio.Funcio.Map.Utility.reduce_map1_funs/1) to create a composite function that runs the individual functions in an pipeline e.g.

 fn v -> funs |> Enum.reduce(v, fn f,v -> f.(v) end) end

index map/1

An index map/1 is really the same as map/1 but it is expected that the first/only function will be called with {value, index}.

predicate/1

A predicate/1 is one or more arity 1 functions that each return either true or false.

Multiple predicates are AND-ed together by Plymio.Funcio.Predicate.reduce_and_predicate1_funs/1 to create a composite predicate e.g.

 fn v -> funs |> Enum.all?(fn f -> f.(v) end) end

index tuple predicate/1

A index tuple predicate/1 is the same as predicate/1 but it is expected the predeicate will be called with {value, index}.

Standard Processing and Result Patterns

Many functions return either {:ok, any} or {:error, error} where error will be an Exception.

Peer bang functions return either value or raises error.

There are three common function patterns described in Plymio.Fontais; many of the functions in this package implement those patterns.

Streams Enumerables

Some functions return {:ok, enum} where enum may be a Stream. A Stream will cause an Exception when used / realised (e.g. in Enum.to_list/1) if the original enum was invalid.

Link to this section Summary

Link to this section Types

Link to this type fun1_map() View Source
fun1_map() :: (any() -> any())
Link to this type fun1_predicate() View Source
fun1_predicate() :: (any() -> boolean())
Link to this type indices() View Source
indices() :: [index()]
Link to this type stream() View Source
stream() :: %Stream{accs: term(), done: term(), enum: term(), funs: term()}