Extra Arguments

Extra arguments are a novel concept in TinyAPL which are inspired by Variant from Dyalog, Custom from A Dictionary of APL, take syntax similar to function axis, and have keys somewhat like Python keyword arguments. They are a way to pass extra information to a function or modifier that slightly changes its behavior. These extra arguments are keyed and are in fact dictionaries. To pass extra arguments to a function or modifier, use Fdict. Alternatively, you can pass a series of keys and values directly: F'a': 3 'hello': 10. Inside a defined function or modifier, you can access the extra arguments you were passed using ɛ, which is a normal dictionary. Usually there will be some calls where you want the extra arguments passed outside to apply, and others where you don't; for example you might want to use an  Index Generator  that has the origin requested from outside, but then also need to generate all bit masks of a certain length, where you'll need the index origin to stay at zero. Because of this, extra arguments passed to a dfn do not automatically apply to calls inside its definition; instead the dfn can opt in where it wants to by writing ɛ next to the calls.

There are a set of extra arguments that are understood by some primitives; these are known as "core extra arguments". For those, there exist "shorthand" modifiers which set a core extra argument to a function or (derived function of a) modifier.