Skip to content

Immutable List

Warning

This page is under construction. The content may be incomplete or incorrect. Submit an issue on GitHub if you need help or want to contribute.

CarryT module-attribute

CarryT = TypeVar('CarryT')

ElemT module-attribute

ElemT = TypeVar('ElemT')

IListType module-attribute

IListType = Generic(IList, ElemT, ListLen)

ListLen module-attribute

ListLen = TypeVar('ListLen')

OutElemT module-attribute

OutElemT = TypeVar('OutElemT')

ResultT module-attribute

ResultT = TypeVar('ResultT')

Foldl krin-statement

Foldl(
    fn: ir.SSAValue,
    collection: ir.SSAValue,
    init: ir.SSAValue,
)

Bases: Statement

collection kirin-argument

collection: SSAValue = argument(IListType[ElemT])

fn kirin-argument

fn: SSAValue = argument(
    Generic(Method, [OutElemT, ElemT], OutElemT)
)

init kirin-argument

init: SSAValue = argument(OutElemT)

result kirin-result

result: ResultValue = result(OutElemT)

traits class-attribute instance-attribute

traits = frozenset({FromPythonCall()})

Foldr krin-statement

Foldr(
    fn: ir.SSAValue,
    collection: ir.SSAValue,
    init: ir.SSAValue,
)

Bases: Statement

collection kirin-argument

collection: SSAValue = argument(IListType[ElemT])

fn kirin-argument

fn: SSAValue = argument(
    Generic(Method, [ElemT, OutElemT], OutElemT)
)

init kirin-argument

init: SSAValue = argument(OutElemT)

result kirin-result

result: ResultValue = result(OutElemT)

traits class-attribute instance-attribute

traits = frozenset({FromPythonCall()})

ForEach krin-statement

ForEach(fn: ir.SSAValue, collection: ir.SSAValue)

Bases: Statement

collection kirin-argument

collection: SSAValue = argument(IListType[ElemT])

fn kirin-argument

fn: SSAValue = argument(Generic(Method, [ElemT], NoneType))

traits class-attribute instance-attribute

traits = frozenset({FromPythonCall()})

Map krin-statement

Map(fn: ir.SSAValue, collection: ir.SSAValue)

Bases: Statement

collection kirin-argument

collection: SSAValue = argument(IListType[ElemT, ListLen])

fn kirin-argument

fn: SSAValue = argument(Generic(Method, [ElemT], OutElemT))

result kirin-result

result: ResultValue = result(IListType[OutElemT, ListLen])

traits class-attribute instance-attribute

traits = frozenset({FromPythonCall()})

New krin-statement

New(values: Sequence[ir.SSAValue])

Bases: Statement

Source code in src/kirin/dialects/ilist/stmts.py
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
def __init__(
    self,
    values: Sequence[ir.SSAValue],
) -> None:
    # get elem type
    if not values:
        elem_type = ir.types.Any
    else:
        elem_type = values[0].type
        for v in values:
            elem_type = elem_type.join(v.type)

    result_type = IListType[elem_type, ir.types.Literal(len(values))]
    super().__init__(
        args=values,
        result_types=(result_type,),
        args_slice={"values": slice(0, len(values))},
    )

result kirin-result

result: ResultValue = result(IListType[ElemT])

traits class-attribute instance-attribute

traits = frozenset({Pure(), FromPythonCall()})

values kirin-argument

values: tuple[SSAValue, ...] = argument(ElemT)

Push krin-statement

Push(lst: ir.SSAValue, value: ir.SSAValue)

Bases: Statement

lst kirin-argument

lst: SSAValue = argument(IListType[ElemT])

result kirin-result

result: ResultValue = result(IListType[ElemT])

traits class-attribute instance-attribute

traits = frozenset({FromPythonCall()})

value kirin-argument

value: SSAValue = argument(IListType[ElemT])

Scan krin-statement

Scan(
    fn: ir.SSAValue,
    collection: ir.SSAValue,
    init: ir.SSAValue,
)

Bases: Statement

collection kirin-argument

collection: SSAValue = argument(IListType[ElemT, ListLen])

fn kirin-argument

fn: SSAValue = argument(
    Generic(
        Method, [OutElemT, ElemT], Tuple[OutElemT, ResultT]
    )
)

init kirin-argument

init: SSAValue = argument(OutElemT)

result kirin-result

result: ResultValue = result(
    Tuple[OutElemT, IListType[ResultT, ListLen]]
)

traits class-attribute instance-attribute

traits = frozenset({FromPythonCall()})