Amalgams¶
Internal documentation for the amalgam.amalgams
module.
-
class
amalgam.amalgams.
Amalgam
[source]¶ The abstract base class for language constructs.
-
bind
(environment: amalgam.environment.Environment) → amalgam.amalgams.Amalgam[source]¶ Protocol for implementing environment binding for
Function
.This base implementation is responsible for allowing bind to be called on other
Amalgam
subclasses by performing no operation aside from returningself
.
-
call
(environment: amalgam.environment.Environment, *arguments: amalgam.amalgams.Amalgam) → amalgam.amalgams.Amalgam[source]¶ Protocol for implementing function calls for
Function
.This base implementation is responsible for making the type signature of
SExpression.func
to properly type check whenSExpression.evaluate()
is called, as well as raisingNotImplementedError
for non-callable types.
-
abstract
evaluate
(environment: amalgam.environment.Environment) → Any[source]¶ Protocol for evaluating or unwrapping
Amalgam
objects.
-
-
class
amalgam.amalgams.
Atom
(value: str)[source]¶ An
Amalgam
that represents different atoms.-
value
¶ The name of the atom.
- Type
str
-
evaluate
(_environment: amalgam.environment.Environment) → amalgam.amalgams.Atom[source]¶ Evaluates to the same
Atom
reference.
-
-
class
amalgam.amalgams.
Numeric
(value: N)[source]¶ An
Amalgam
that wraps around numeric types.Parameterized as a
Generic
by:N = TypeVar("N", int, float, Fraction)
-
value
¶ The numeric value being wrapped.
- Type
N
-
evaluate
(_environment: amalgam.environment.Environment) → amalgam.amalgams.Numeric[source]¶ Evaluates to the same
Numeric
reference.
-
-
class
amalgam.amalgams.
Symbol
(value: str)[source]¶ An
Amalgam
that wraps around symbols.-
value
¶ The name of the symbol.
- Type
str
-
evaluate
(environment: amalgam.environment.Environment) → amalgam.amalgams.Amalgam[source]¶ Searches the provided environment fully with
Symbol.value
. Returns theAmalgam
object bound to theSymbol.value
in the environment. Raisesenvironment.SymbolNotFound
if a binding is not found.
-
-
class
amalgam.amalgams.
Function
(name: str, fn: Callable[[…], amalgam.amalgams.Amalgam], defer: bool = False, contextual: bool = False)[source]¶ An
Amalgam
that wraps around functions.-
name
¶ The name of the function.
- Type
str
-
fn
¶ The function being wrapped. Must have the signature: (env, amalgams…) -> amalgam.
- Type
Callable[..., Amalgam]
-
defer
¶ If set to
True
, arguments are wrapped inQuoted
before being passed toFunction.fn
.- Type
bool
-
contextual
¶ If set to
True
, disallows function calls whenFunction.in_context
is set toFalse
.- Type
bool
-
env
¶ The
environment.Environment
instance bound to the function. Overrides the environment parameter passed to theFunction.call()
method.
-
in_context
¶ Predicate that disallows functions to be called outside of specific contexts. Makes
Function.call()
raiseDisallowedContextError
when set toFalse
andFunction.contextual
is set toTrue
.- Type
bool
-
bind
(environment: amalgam.environment.Environment) → amalgam.amalgams.Function[source]¶ Sets the
Function.env
attribute and returns the sameFunction
reference.
-
call
(environment: amalgam.environment.Environment, *arguments: amalgam.amalgams.Amalgam) → amalgam.amalgams.Amalgam[source]¶ Performs the call to the
Function.fn
attribute.Performs pre-processing depending on the values of
Function.defer
,Function.contextual
, andFunction.in_context
,
-
evaluate
(_environment: amalgam.environment.Environment) → amalgam.amalgams.Function[source]¶ Evaluates to the same
Function
reference.
-
with_name
(name: str) → amalgam.amalgams.Function[source]¶ Sets the
Function.name
attribute and returns the sameFunction
reference.
-
-
class
amalgam.amalgams.
SExpression
(*vals: amalgam.amalgams.Amalgam)[source]¶ An
Amalgam
that wraps around S-Expressions.-
vals
¶ Entities contained by the S-Expression.
- Type
Tuple[Amalgam, ...]
-
evaluate
(environment: amalgam.environment.Environment) → amalgam.amalgams.Amalgam[source]¶ Evaluates
func
using environment before invoking thecall()
method with environment andSExpression.args
.
-
property
args
¶ The rest of the
SExpression.vals
.
-
property
func
¶ The head of the
SExpression.vals
.
-
-
class
amalgam.amalgams.
Vector
(*vals: T)[source]¶ An
Amalgam
that wraps around a homogenous vector.Parameterized as a
Generic
by:T = TypeVar("T", bound=Amalgam)
-
vals
¶ Entities contained by the vector
- Type
Tuple[T, ...]
-
mapping
¶ Mapping representing vectors with
Atom
s for odd indices andAmalgam
s for even indices.- Type
Mapping[str, Amalgam]
-
_as_mapping
() → Mapping[str, amalgam.amalgams.Amalgam][source]¶ Attemps to create a
Mapping[str, Amalgam]
fromVector.vals
.Odd indices must be
Atom
s and even indices must beAmalgam
s. Returns an empty mapping if this form is not met.
-
evaluate
(environment: amalgam.environment.Environment) → amalgam.amalgams.Vector[source]¶ Creates a new
Vector
by evaluating every value inVector.vals
.
-
-
class
amalgam.amalgams.
Quoted
(value: T)[source]¶ An
Amalgam
that defers evaluation of otherAmalgam
s.Parameterized as a
Generic
by:T = TypeVar("T", bound=Amalgam)
-
evaluate
(_environment: amalgam.environment.Environment) → amalgam.amalgams.Quoted[source]¶ Evaluates to the same
Quoted
reference.
-
-
class
amalgam.amalgams.
Internal
(value: P)[source]¶ An
Amalgam
that holds Pythonobject
s.Parameterized as a
Generic
by:P = TypeVar("P", bound=object)
-
value
¶ The Python
object
being wrapped.- Type
P
-
evaluate
(_environment: amalgam.environment.Environment) → amalgam.amalgams.Internal[source]¶ Evaluates to the same
Internal
reference.
-