LoadFunc#

class hugr.ops.LoadFunc(signature: tys.PolyFuncType, instantiation: tys.FunctionType | None = None, type_args: Sequence[tys.TypeArg] | None = None)[source]#

Bases: _CallOrLoad, DataflowOp

Load a statically defined function as a higher order value.

Connects to FuncDefn or FuncDecl operations.

Parameters:
  • signature – Polymorphic function signature.

  • instantiation – Concrete function signature. Defaults to None.

  • type_args – Type arguments for polymorphic function. Defaults to None.

Raises:

NoConcreteFunc – If the signature is polymorphic and no instantiation is provided.

Methods

name

Name of the operation.

outer_signature

The external signature of this operation.

port_kind

Get the kind of the given port.

port_type

Get the type of the given dataflow port from the signature of the operation.

Attributes

num_out

signature

polymorphic function signature

instantiation

concrete function signature

type_args

type arguments for polymorphic function

instantiation: FunctionType#

concrete function signature

name() str[source]#

Name of the operation.

num_out: int = Field(name=None,type=None,default=1,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=False,hash=None,compare=True,metadata=mappingproxy({}),kw_only=<dataclasses._MISSING_TYPE object>,_field_type=None)#
outer_signature() FunctionType[source]#

The external signature of this operation. Defines the valid external connectivity of the node the operation belongs to.

port_kind(port: InPort | OutPort) ValueKind | ConstKind | FunctionKind | CFKind | OrderKind[source]#

Get the kind of the given port.

Example

>>> op = Const(val.TRUE)
>>> op.port_kind(OutPort(Node(0), 0))
ConstKind(Bool)
port_type(port: InPort | OutPort) Type#

Get the type of the given dataflow port from the signature of the operation.

Example

>>> op = Input([tys.Bool])
>>> op.port_type(OutPort(Node(0), 0))
Bool
signature: PolyFuncType#

polymorphic function signature

type_args: list[TypeArg]#

type arguments for polymorphic function