---
name: "Attean::API::Iterator"
section: "3pm"
platform: "linux"
package: "libattean-perl"
version: "0.035-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Attean::API::Iterator"
---

# Attean::API::Iterator(3pm)

Typed iterator

## NAME

Attean::API::Iterator - Typed iterator

## VERSION

This document describes Attean::API::Iterator version 0.035

## DESCRIPTION

The Attean::API::Iterator role defines a common API for typed iterators. This package also defines several type-specific iterator roles:

- •

  Attean::API::TripleIterator

- •

  Attean::API::QuadIterator

- •

  Attean::API::MixedStatementIterator

- •

  Attean::API::ResultIterator

These roles will automatically be applied to iterators during construction when appropriate.

## ATTRIBUTES

The following attributes exist:

- "item\_type"

  A string indicating the type of elements returned by the iterator.

## REQUIRED METHODS

The following methods are required by the Attean::API::Iterator role:

- "next"

  Returns the next element from the iterator, or `"undef"` upon exhaustion.

## METHODS

The Attean::API::Iterator role provides default implementations of the following methods:

- "elements"

  Returns a list of all remaining elements in the iterator.

- "map( \\&mapper \[, $result\_type\] )"

  Returns a new Attean::API::Iterator object with each element mapped using the supplied `&mapper` function. If the iterator elements are of the same type as those in the referent iterator, only a mapping function is required. Otherwise, the supplied Type::Tiny `$result_type` object must indicate the new iterator's type information.

- grep( \\&filter )

  Returns a new Attean::API::Iterator object that filters elements from the referent iterator based on whether calling `&filter( $element )` for each `$element` results in a true value.

- offset( $offset )

  Returns the Attean::API::Iterator referent after skipping the first `$offset` elements.

- limit( $limit )

  Returns a new Attean::API::Iterator object which returns the first `$limit` elements of the referent.

- "materialize"

  Returns a new Attean::API::RepeatableIterator object containing all the elements from the referent.

- debug( \[$name\] )

  Print each item as it is consumed (with the string generated by `"as_string"`), prepended by `$name`.

### Methods on Roles Supporting Stringification

For iterators over roles that provide an `"as_string"` method, extra methods are provided. These iterators are:

Attean::API::ResultOrTermIterator Attean::API::StatementIterator Attean::API::MixedStatementIterator Attean::API::ResultIterator Attean::API::TermIterator

They provide the following methods:

- "uniq"

  Returns a new iterator providing unique results (based on the stringified value of the underlying elements).

## BUGS

Please report any bugs or feature requests to through the GitHub web interface at \<https://github.com/kasei/attean/issues\>.

## SEE ALSO

Attean::API::RepeatableIterator

## AUTHOR

Gregory Todd Williams  `"<gwilliams@cpan.org>"`

## COPYRIGHT

Copyright (c) 2014--2022 Gregory Todd Williams. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
