{"id":37431848,"url":"https://github.com/kschuetz/enhanced-iterables","last_synced_at":"2026-01-16T06:35:50.494Z","repository":{"id":54890832,"uuid":"187726262","full_name":"kschuetz/enhanced-iterables","owner":"kschuetz","description":"Iterables with additional methods","archived":false,"fork":false,"pushed_at":"2022-09-30T23:04:07.000Z","size":948,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-09T14:42:36.884Z","etag":null,"topics":["functional-programming","immutable","iterables","java","lambda","non-empty"],"latest_commit_sha":null,"homepage":"https://kschuetz.github.io/enhanced-iterables/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kschuetz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-20T23:17:10.000Z","updated_at":"2022-10-30T22:43:23.000Z","dependencies_parsed_at":"2022-08-14T05:50:50.925Z","dependency_job_id":null,"html_url":"https://github.com/kschuetz/enhanced-iterables","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/kschuetz/enhanced-iterables","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kschuetz%2Fenhanced-iterables","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kschuetz%2Fenhanced-iterables/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kschuetz%2Fenhanced-iterables/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kschuetz%2Fenhanced-iterables/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kschuetz","download_url":"https://codeload.github.com/kschuetz/enhanced-iterables/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kschuetz%2Fenhanced-iterables/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28477881,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["functional-programming","immutable","iterables","java","lambda","non-empty"],"created_at":"2026-01-16T06:35:50.382Z","updated_at":"2026-01-16T06:35:50.465Z","avatar_url":"https://github.com/kschuetz.png","language":"Java","readme":"# enhanced-iterables\n\n[![enhanced-iterables](https://img.shields.io/maven-central/v/software.kes/enhanced-iterables.svg)](http://search.maven.org/#search%7Cga%7C1%7Csoftware.kes.enhanced-iterables)\n[![Javadoc](https://javadoc-badge.appspot.com/software.kes/enhanced-iterables.svg?label=javadoc)](https://kschuetz.github.io/enhanced-iterables/javadoc/)\n[![CircleCI](https://circleci.com/gh/kschuetz/enhanced-iterables.svg?style=svg)](https://circleci.com/gh/kschuetz/enhanced-iterables)\n[![Maintainability](https://api.codeclimate.com/v1/badges/02d956357e0a4eb21d20/maintainability)](https://codeclimate.com/github/kschuetz/enhanced-iterables/maintainability)\n\n#### Table of Contents\n\n- [What is it?](#what-is-it)\n- [Types](#types)\n   - [`EnhancedIterable\u003cA\u003e`](#enhanced-iterable)\n   - [`FiniteIterable\u003cA\u003e`](#finite-iterable)\n   - [`NonEmptyIterable\u003cA\u003e`](#non-empty-iterable)\n   - [`NonEmptyFiniteIterable\u003cA\u003e`](#non-empty-finite-iterable)\n   - [`ImmutableIterable\u003cA\u003e`](#immutable-iterable)\n   - [`ImmutableFiniteIterable\u003cA\u003e`](#immutable-finite-iterable)\n   - [`ImmutableNonEmptyIterable\u003cA\u003e`](#immutable-non-empty-iterable)\n   - [`ImmutableNonEmptyFiniteIterable\u003cA\u003e`](#immutable-non-empty-finite-iterable)\n- [License](#license)\n\n# What is it?\n\n*enhanced-iterables* is a Java library that is intended to be used in conjunction\nwith [lambda](https://github.com/palatable/lambda).\n\nIt provides interfaces that add some useful methods to `Iterable`s. Most of these methods delegate to lambda functions,\nand return the most specific type of `Iterable` possible.\n\nFor more details, check out the [javadoc](https://kschuetz.github.io/enhanced-iterables/javadoc/).\n\n# [lambda](https://github.com/palatable/lambda) version compatibility\n\nThe current version of *enhanced-iterables* has been certified to be compatible with the following lambda versions:\n\n- 5.3.0\n- 5.2.0\n- 5.1.0\n- 5.0.0\n- 4.0.0\n\n# Types\n\n## \u003ca name=\"enhanced-iterable\"\u003e`EnhancedIterable\u003cA\u003e`\u003c/a\u003e\n\nThe base functionality that can be added to any `Iterable`. Can be infinite, finite, or empty.\n\n### Methods\n\n| Method | Returns | Lambda function |\n|---|---|---|\n| `append` | `NonEmptyIterable\u003cA\u003e`| [`Snoc.snoc`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Snoc.html) |\n| `concat` | `EnhancedIterable\u003cA\u003e`| [`Concat.concat`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/monoid/builtin/Concat.html) |\n| `drop` | `EnhancedIterable\u003cA\u003e`| [`Drop.drop`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Drop.html) |\n| `dropWhile` | `EnhancedIterable\u003cA\u003e`| [`DropWhile.dropWhile`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/DropWhile.html) |\n| `filter` | `EnhancedIterable\u003cA\u003e`| [`Filter.filter`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Filter.html) |\n| `find` | `Maybe\u003cA\u003e`| [`Find.find`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Find.html) |\n| `fmap` | `EnhancedIterable\u003cB\u003e`| [`Map.map`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Map.html) |\n| `intersperse` | `EnhancedIterable\u003cB\u003e`| [`Intersperse.intersperse`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Intersperse.html) |\n| `isEmpty` | `boolean`| -- |\n| `magnetizeBy` | `EnhancedIterable\u003cNonEmptyIterable\u003cA\u003e\u003e `| [`MagnetizeBy.magnetizeBy`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/MagnetizeBy.html) |\n| `partition` | `Tuple2\u003cEnhancedIterable\u003cB\u003e, EnhancedIterable\u003cC\u003e\u003e`| [`Partition.partition`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Partition.html) |\n| `prepend` | `NonEmptyIterable\u003cA\u003e`| [`Cons.cons`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Cons.html) |\n| `prependAll` | `EnhancedIterable\u003cA\u003e`| [`PrependAll.prependAll`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/PrependAll.html) |\n| `slide` | `EnhancedIterable\u003cNonEmptyFiniteIterable\u003cA\u003e\u003e`| [`Slide.slide`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Slide.html) |\n| `span` | `Tuple2\u003cEnhancedIterable\u003cA\u003e, EnhancedIterable\u003cA\u003e\u003e`| [`Span.span`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Span.html) |\n| `take` | `FiniteIterable\u003cA\u003e`| [`Take.take`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Take.html) |\n| `takeWhile` | `EnhancedIterable\u003cA\u003e`| [`TakeWhile.takeWhile`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/TakeWhile.html) |\n| `toArray` | `A[]`| [`ToArray.toArray`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/ToArray.html) |\n| `toCollection` | `C extends Collection\u003cA\u003e`| [`ToCollection.toCollection`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/ToCollection.html) |\n| `zipWith` | `EnhancedIterable\u003cC\u003e`| [`ZipWith.zipWith`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn3/ZipWith.html) |\n\n### Constructing\n\nAny existing `Iterable\u003cA\u003e` can be converted to an `EnhancedIterable\u003cA\u003e` by calling the `EnhancedIterable.enhance` static method.\n\n## \u003ca name=\"finite-iterable\"\u003e`FiniteIterable\u003cA\u003e`\u003c/a\u003e\n\nAn `EnhancedIterable` that is known at compile-time to be finite.\n\n### Methods\n\nIn addition to all methods on `EnhancedIterable\u003cA\u003e`, provides the following:\n\n| Method | Returns | Lambda function |\n|---|---|---|\n| `append` | `NonEmptyFiniteIterable\u003cA\u003e`| [`Snoc.snoc`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Snoc.html) |\n| `concat` | `FiniteIterable\u003cA\u003e`| [`Concat.concat`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/monoid/builtin/Concat.html) |\n| `cross` | `FiniteIterable\u003cTuple2\u003cA, B\u003e\u003e\u003e`| [`CartestianProduct.cartesianProduct`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/CartesianProduct.html) |\n| `cycle` | `EnhancedIterable\u003cA\u003e`| [`Cycle.cycle`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Cycle.html) |\n| `distinct` | `FiniteIterable\u003cA\u003e`| [`Distinct.distinct`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Distinct.html) |\n| `drop` | `FiniteIterable\u003cA\u003e`| [`Drop.drop`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Drop.html) |\n| `dropWhile` | `FiniteIterable\u003cA\u003e`| [`DropWhile.dropWhile`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/DropWhile.html) |\n| `filter` | `FiniteIterable\u003cA\u003e`| [`Filter.filter`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Filter.html) |\n| `fmap` | `FiniteIterable\u003cB\u003e`| [`Map.map`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Map.html) |\n| `foldLeft` | `B` | [`FoldLeft.foldLeft`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn3/FoldLeft.html) |\n| `inits` | `NonEmptyIterable\u003cFiniteIterable\u003cA\u003e\u003e`| [`Inits.inits`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Inits.html) |\n| `intersperse` | `FiniteIterable\u003cA\u003e`| [`Intersperse.intersperse`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Intersperse.html) |\n| `magnetizeBy` | `FiniteIterable\u003cNonEmptyFiniteIterable\u003cA\u003e\u003e `| [`MagnetizeBy.magnetizeBy`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/MagnetizeBy.html) |\n| `partition` | `Tuple2\u003cFiniteIterable\u003cB\u003e, FiniteIterable\u003cC\u003e\u003e`| [`Partition.partition`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Partition.html) |\n| `prepend` | `NonEmptyFiniteIterable\u003cA\u003e`| [`Cons.cons`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Cons.html) |\n| `prependAll` | `FiniteIterable\u003cA\u003e`| [`PrependAll.prependAll`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/PrependAll.html) |\n| `reverse` | `FiniteIterable\u003cA\u003e`| [`Reverse.reverse`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Reverse.html) |\n| `slide` | `FiniteIterable\u003cNonEmptyFiniteIterable\u003cA\u003e\u003e`| [`Slide.slide`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Slide.html) |\n| `span` | `Tuple2\u003cFiniteIterable\u003cA\u003e, FiniteIterable\u003cA\u003e\u003e`| [`Span.span`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Span.html) |\n| `tails` | `NonEmptyIterable\u003cFiniteIterable\u003cA\u003e\u003e`| [`Tails.tails`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Tails.html) |\n| `takeWhile` | `FiniteIterable\u003cA\u003e`| [`TakeWhile.takeWhile`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/TakeWhile.html) |\n| `zipWith` | `FiniteIterable\u003cC\u003e`| [`ZipWith.zipWith`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn3/ZipWith.html) |\n\n### Constructing\n\n- Any existing `Collection\u003cA\u003e` can be converted to a `FiniteIterable\u003cA\u003e` by calling the `FiniteIterable.finiteIterable` static method.\n- An `Iterable\u003cA\u003e` can converted to a `FiniteIterable\u003cA\u003e` by calling `FiniteIterable.finiteIterable` and providing a maximum size.\n\n## \u003ca name=\"non-empty-iterable\"\u003e`NonEmptyIterable\u003cA\u003e`\u003c/a\u003e\n\nAn `EnhancedIterable` that is known at compile-time to be non-empty.  May be finite or infinite.\n\n### Methods\n\nIn addition to all methods on `EnhancedIterable\u003cA\u003e`, provides the following:\n\n| Method | Returns | Lambda function |\n|---|---|---|\n| `concat` | `NonEmptyIterable\u003cA\u003e`| [`Concat.concat`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/monoid/builtin/Concat.html) |\n| `fmap` | `NonEmptyIterable\u003cB\u003e`| [`Map.map`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Map.html) |\n| `head` | `A`| [`Head.head`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Head.html)|\n| `intersperse` | `NonEmptyIterable\u003cA\u003e`| [`Intersperse.intersperse`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Intersperse.html) |\n| `magnetizeBy` | `NonEmptyIterable\u003cNonEmptyIterable\u003cA\u003e\u003e `| [`MagnetizeBy.magnetizeBy`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/MagnetizeBy.html) |\n| `prependAll` | `NonEmptyIterable\u003cA\u003e`| [`PrependAll.prependAll`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/PrependAll.html) |\n| `tail` | `EnhancedIterable\u003cA\u003e`| [`Tail.tail`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Tail.html) |\n| `zipWith` | `NonEmptyIterable\u003cC\u003e`| [`ZipWith.zipWith`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn3/ZipWith.html) |\n\n### Constructing\n\nAn `Iterable\u003cA\u003e` can converted to a `NonEmptyIterable\u003cA\u003e` by calling `NonEmptyIterable.nonEmptyIterable` and providing an additional element for the head.\n\n## \u003ca name=\"non-empty-finite-iterable\"\u003e`NonEmptyFiniteIterable\u003cA\u003e`\u003c/a\u003e\n\nAn `EnhancedIterable` that is known at compile-time to be non-empty and finite.\n\n### Methods\n\nIn addition to all methods on `FiniteIterable\u003cA\u003e` and `NonEmptyIterable\u003cA\u003e`, provides the following:\n\n| Method | Returns | Lambda function |\n|---|---|---|\n| `concat` | `NonEmptyFiniteIterable\u003cA\u003e`| [`Concat.concat`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/monoid/builtin/Concat.html) |\n| `cross` | `NonEmptyFiniteIterable\u003cTuple2\u003cA, B\u003e\u003e\u003e`| [`CartestianProduct.cartesianProduct`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/CartesianProduct.html) |\n| `cycle` | `NonEmptyIterable\u003cA\u003e`| [`Cycle.cycle`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Cycle.html) |\n| `distinct` | `NonEmptyFiniteIterable\u003cA\u003e`| [`Distinct.distinct`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Distinct.html) |\n| `fmap` | `NonEmptyFiniteIterable\u003cB\u003e`| [`Map.map`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Map.html) |\n| `init` | `FiniteIterable\u003cA\u003e`| [`Init.init`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Init.html)|\n| `intersperse` | `NonEmptyFiniteIterable\u003cA\u003e`| [`Intersperse.intersperse`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Intersperse.html) |\n| `last` | `A`| [`Last.last`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Last.html) |\n| `magnetizeBy` | `NonEmptyFiniteIterable\u003cNonEmptyFiniteIterable\u003cA\u003e\u003e `| [`MagnetizeBy.magnetizeBy`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/MagnetizeBy.html) |\n| `prependAll` | `NonEmptyFiniteIterable\u003cA\u003e`| [`PrependAll.prependAll`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/PrependAll.html) |\n| `reverse` | `NonEmptyFiniteIterable\u003cA\u003e`| [`Reverse.reverse`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Reverse.html) |\n| `tail` | `FiniteIterable\u003cA\u003e`| [`Tail.tail`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Tail.html) |\n| `zipWith` | `NonEmptyFiniteIterable\u003cC\u003e`| [`ZipWith.zipWith`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn3/ZipWith.html) |\n\n### Constructing\n\nA `FiniteIterable\u003cA\u003e` can converted to a `NonEmptyFiniteIterable\u003cA\u003e` by calling `NonEmptyFiniteIterable.nonEmptyFiniteIterable` and providing an additional element for the head.\n\n## \u003ca name=\"immutable-iterable\"\u003e`ImmutableIterable\u003cA\u003e`\u003c/a\u003e\n\nAn `EnhancedIterable` that is known at compile-time to be safe from mutation.  May be empty, finite, or infinite.\n\n### Methods\n\nIn addition to all methods on `EnhancedIterable\u003cA\u003e`, provides the following:\n\n| Method | Returns | Lambda function |\n|---|---|---|\n| `append` | `ImmutableNonEmptyIterable\u003cA\u003e`| [`Snoc.snoc`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Snoc.html) |\n| `concat` | `ImmutableIterable\u003cA\u003e`| [`Concat.concat`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/monoid/builtin/Concat.html) |\n| `drop` | `ImmutableIterable\u003cA\u003e`| [`Drop.drop`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Drop.html) |\n| `dropWhile` | `ImmutableIterable\u003cA\u003e`| [`DropWhile.dropWhile`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/DropWhile.html) |\n| `filter` | `ImmutableIterable\u003cA\u003e`| [`Filter.filter`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Filter.html) |\n| `fmap` | `ImmutableIterable\u003cB\u003e`| [`Map.map`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Map.html) |\n| `intersperse` | `ImmutableIterable\u003cB\u003e`| [`Intersperse.intersperse`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Intersperse.html) |\n| `magnetizeBy` | `ImmutableIterable\u003cImmutableNonEmptyIterable\u003cA\u003e\u003e `| [`MagnetizeBy.magnetizeBy`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/MagnetizeBy.html) |\n| `partition` | `Tuple2\u003cImmutableIterable\u003cB\u003e, ImmutableIterable\u003cC\u003e\u003e`| [`Partition.partition`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Partition.html) |\n| `prepend` | `ImmutableNonEmptyIterable\u003cA\u003e`| [`Cons.cons`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Cons.html) |\n| `prependAll` | `ImmutableIterable\u003cA\u003e`| [`PrependAll.prependAll`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/PrependAll.html) |\n| `slide` | `ImmutableIterable\u003cImmutableNonEmptyFiniteIterable\u003cA\u003e\u003e`| [`Slide.slide`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Slide.html) |\n| `span` | `Tuple2\u003cImmutableIterable\u003cA\u003e, ImmutableIterable\u003cA\u003e\u003e`| [`Span.span`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Span.html) |\n| `take` | `ImmutableFiniteIterable\u003cA\u003e`| [`Take.take`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Take.html) |\n| `takeWhile` | `ImmutableIterable\u003cA\u003e`| [`TakeWhile.takeWhile`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/TakeWhile.html) |\n| `zipWith` | `ImmutableIterable\u003cC\u003e`| [`ZipWith.zipWith`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn3/ZipWith.html) |\n\n### Constructing\n- `ImmutableIterable.of` static method\n- `ImmutableIterable.copyFrom` static method constructs `ImmutableFiniteIterable`s by copying from existing finite iterables (such as `Collection`s) \n- The [*collection-views*](https://github.com/kschuetz/collection-views) library provides some implementations of `ImmutableIterable` (e.g. `ImmutableVector`).\n\n## \u003ca name=\"immutable-finite-iterable\"\u003e`ImmutableFiniteIterable\u003cA\u003e`\u003c/a\u003e\n\nAn `EnhancedIterable` that is known at compile-time to be safe from mutation and finite.  May be empty.\n\n### Methods\n\nIn addition to all methods on `ImmutableIterable\u003cA\u003e` and `FiniteIterable\u003cA\u003e`, provides the following:\n\n| Method | Returns | Lambda function |\n|---|---|---|\n| `append` | `ImmutableNonEmptyFiniteIterable\u003cA\u003e`| [`Snoc.snoc`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Snoc.html) |\n| `concat` | `ImmutableFiniteIterable\u003cA\u003e`| [`Concat.concat`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/monoid/builtin/Concat.html) |\n| `cross` | `ImmutableFiniteIterable\u003cTuple2\u003cA, B\u003e\u003e\u003e`| [`CartestianProduct.cartesianProduct`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/CartesianProduct.html) |\n| `cycle` | `ImmutableIterable\u003cA\u003e`| [`Cycle.cycle`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Cycle.html) |\n| `distinct` | `ImmutableFiniteIterable\u003cA\u003e`| [`Distinct.distinct`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Distinct.html) |\n| `drop` | `ImmutableFiniteIterable\u003cA\u003e`| [`Drop.drop`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Drop.html) |\n| `dropWhile` | `ImmutableFiniteIterable\u003cA\u003e`| [`DropWhile.dropWhile`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/DropWhile.html) |\n| `filter` | `ImmutableFiniteIterable\u003cA\u003e`| [`Filter.filter`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Filter.html) |\n| `fmap` | `ImmutableFiniteIterable\u003cB\u003e`| [`Map.map`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Map.html) |\n| `intersperse` | `ImmutableFiniteIterable\u003cB\u003e`| [`Intersperse.intersperse`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Intersperse.html) |\n| `magnetizeBy` | `ImmutableFiniteIterable\u003cImmutableNonEmptyFiniteIterable\u003cA\u003e\u003e `| [`MagnetizeBy.magnetizeBy`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/MagnetizeBy.html) |\n| `partition` | `Tuple2\u003cImmutableFiniteIterable\u003cB\u003e, ImmutableFiniteIterable\u003cC\u003e\u003e`| [`Partition.partition`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Partition.html) |\n| `prepend` | `ImmutableNonEmptyFiniteIterable\u003cA\u003e`| [`Cons.cons`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Cons.html) |\n| `prependAll` | `ImmutableFiniteIterable\u003cA\u003e`| [`PrependAll.prependAll`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/PrependAll.html) |\n| `reverse` | `ImmutableFiniteIterable\u003cA\u003e`| [`Reverse.reverse`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Reverse.html) |\n| `slide` | `ImmutableFiniteIterable\u003cImmutableNonEmptyFiniteIterable\u003cA\u003e\u003e`| [`Slide.slide`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Slide.html) |\n| `span` | `Tuple2\u003cImmutableFiniteIterable\u003cA\u003e, ImmutableFiniteIterable\u003cA\u003e\u003e`| [`Span.span`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Span.html) |\n| `tails` | `NonEmptyIterable\u003cImmutableFiniteIterable\u003cA\u003e\u003e`| [`Tails.tails`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Tails.html) |\n| `takeWhile` | `ImmutableFiniteIterable\u003cA\u003e`| [`TakeWhile.takeWhile`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/TakeWhile.html) |\n| `zipWith` | `ImmutableFiniteIterable\u003cC\u003e`| [`ZipWith.zipWith`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn3/ZipWith.html) |\n\n### Constructing\n- `ImmutableFiniteIterable.of` static method\n- `ImmutableIterable.copyFrom` static method constructs `ImmutableFiniteIterable`s by copying from existing finite iterables (such as `Collection`s) \n- The [*collection-views*](https://github.com/kschuetz/collection-views) library provides some implementations of `ImmutableFiniteIterable` (e.g. `ImmutableVector`).\n\n## \u003ca name=\"immutable-non-empty-iterable\"\u003e`ImmutableNonEmptyIterable\u003cA\u003e`\u003c/a\u003e\n\nAn `EnhancedIterable` that is known at compile-time to be safe from mutation and non-empty.  May be finite or infinite.\n\n### Methods\n\nIn addition to all methods on `ImmutableIterable\u003cA\u003e` and `NonEmptyIterable\u003cA\u003e`, provides the following:\n\n| Method | Returns | Lambda function |\n|---|---|---|\n| `concat` | `ImmutableNonEmptyIterable\u003cA\u003e`| [`Concat.concat`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/monoid/builtin/Concat.html) |\n| `fmap` | `ImmutableNonEmptyIterable\u003cB\u003e`| [`Map.map`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Map.html) |\n| `intersperse` | `ImmutableNonEmptyIterable\u003cA\u003e`| [`Intersperse.intersperse`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Intersperse.html) |\n| `magnetizeBy` | `ImmutableNonEmptyIterable\u003cImmutableNonEmptyIterable\u003cA\u003e\u003e `| [`MagnetizeBy.magnetizeBy`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/MagnetizeBy.html) |\n| `prependAll` | `ImmutableNonEmptyIterable\u003cA\u003e`| [`PrependAll.prependAll`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/PrependAll.html) |\n| `tail` | `ImmutableIterable\u003cA\u003e`| [`Tail.tail`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Tail.html) |\n| `zipWith` | `ImmutableNonEmptyIterable\u003cC\u003e`| [`ZipWith.zipWith`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn3/ZipWith.html) |\n\n### Constructing\n- `ImmutableNonEmptyIterable.of` static method\n- An `ImmutableIterable\u003cA\u003e` can converted to a `ImmutableNonEmptyIterable\u003cA\u003e` by calling `ImmutableNonEmptyIterable.immutableNonEmptyIterable` and providing an additional element for the head.\n- The [*collection-views*](https://github.com/kschuetz/collection-views) library provides some implementations of `ImmutableNonEmptyIterable` (e.g. `ImmutableNonEmptyVector`).\n\n## \u003ca name=\"immutable-non-empty-finite-iterable\"\u003e`ImmutableNonEmptyFiniteIterable\u003cA\u003e`\u003c/a\u003e\n\nAn `EnhancedIterable` that is known at compile-time to be safe from mutation, non-empty, and finite.\n\n### Methods\n\nIn addition to all methods on `ImmutableFiniteIterable\u003cA\u003e` and `ImmutableNonEmptyIterable\u003cA\u003e`, provides the following:\n\n| Method | Returns | Lambda function |\n|---|---|---|\n| `concat` | `ImmutableNonEmptyFiniteIterable\u003cA\u003e`| [`Concat.concat`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/monoid/builtin/Concat.html) |\n| `cross` | `ImmutableNonEmptyFiniteIterable\u003cTuple2\u003cA, B\u003e\u003e\u003e`| [`CartestianProduct.cartesianProduct`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/CartesianProduct.html) |\n| `cycle` | `ImmutableNonEmptyIterable\u003cA\u003e`| [`Cycle.cycle`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Cycle.html) |\n| `distinct` | `ImmutableFiniteIterable\u003cA\u003e`| [`Distinct.distinct`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Distinct.html) |\n| `fmap` | `ImmutableNonEmptyFiniteIterable\u003cB\u003e`| [`Map.map`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Map.html) |\n| `init` | `ImmutableFiniteIterable\u003cA\u003e`| [`Init.init`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Init.html)|\n| `intersperse` | `ImmutableNonEmptyFiniteIterable\u003cB\u003e`| [`Intersperse.intersperse`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/Intersperse.html) |\n| `magnetizeBy` | `ImmutableFiniteIterable\u003cImmutableNonEmptyFiniteIterable\u003cA\u003e\u003e `| [`MagnetizeBy.magnetizeBy`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/MagnetizeBy.html) |\n| `prependAll` | `ImmutableNonEmptyFiniteIterable\u003cA\u003e`| [`PrependAll.prependAll`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn2/PrependAll.html) |\n| `reverse` | `ImmutableNonEmptyFiniteIterable\u003cA\u003e`| [`Reverse.reverse`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn1/Reverse.html) |\n| `zipWith` | `ImmutableNonEmptyFiniteIterable\u003cC\u003e`| [`ZipWith.zipWith`](https://palatable.github.io/lambda/javadoc/com/jnape/palatable/lambda/functions/builtin/fn3/ZipWith.html) |\n\n### Constructing\n- `ImmutableNonEmptyFiniteIterable.of` static method\n- An `ImmutableFiniteIterable\u003cA\u003e` can converted to a `ImmutableNonEmptyFiniteIterable\u003cA\u003e` by calling `ImmutableNonEmptyFiniteIterable.immutableNonEmptyFiniteIterable` and providing an additional element for the head.\n- The [*collection-views*](https://github.com/kschuetz/collection-views) library provides some implementations of `ImmutableNonEmptyFiniteIterable` (e.g. `ImmutableNonEmptyVector`).\n\n# \u003ca name=\"license\"\u003eLicense\u003c/a\u003e\n\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fkschuetz%2Fenhanced-iterables.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fkschuetz%2Fenhanced-iterables?ref=badge_shield)\n\n*enhanced-iterables* is distributed under [The MIT License](http://choosealicense.com/licenses/mit/).\n\nThe MIT License (MIT)\n\nCopyright © 2019 Kevin Schuetz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkschuetz%2Fenhanced-iterables","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkschuetz%2Fenhanced-iterables","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkschuetz%2Fenhanced-iterables/lists"}