docs/Nixpkgs/Library-Reference/lists/index.html

6854 lines
187 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Aux Documentation">
<meta name="author" content="Nixpkgs Aux, and Lix Contributors">
<link rel="canonical" href="https://docs.auxolotl.org/Nixpkgs/Library-Reference/lists/">
<link rel="prev" href="../gvariant/">
<link rel="next" href="../meta/">
<link rel="icon" href="../../../assets/aux-logo.svg">
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.29">
<title>lib.lists: list manipulation functions - Aux Docs</title>
<link rel="stylesheet" href="../../../assets/stylesheets/main.76a95c52.min.css">
<link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.bunny.net/css?family=IBM+Plex+Sans:300,300i,400,400i,700,700i%7CIBM+Plex+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"IBM Plex Sans";--md-code-font:"IBM Plex Mono"}</style>
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<meta property="og:type" content="website" >
<meta property="og:title" content="lib.lists: list manipulation functions {#sec-functions-library-lists} - Aux Docs" >
<meta property="og:description" content="Aux Documentation" >
<meta property="og:image" content="https://docs.auxolotl.org/assets/images/social/Nixpkgs/Library-Reference/lists.png" >
<meta property="og:image:type" content="image/png" >
<meta property="og:image:width" content="1200" >
<meta property="og:image:height" content="630" >
<meta property="og:url" content="https://docs.auxolotl.org/Nixpkgs/Library-Reference/lists/" >
<meta name="twitter:card" content="summary_large_image" >
<meta name="twitter:title" content="lib.lists: list manipulation functions {#sec-functions-library-lists} - Aux Docs" >
<meta name="twitter:description" content="Aux Documentation" >
<meta name="twitter:image" content="https://docs.auxolotl.org/assets/images/social/Nixpkgs/Library-Reference/lists.png" >
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="blue">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#sec-functions-library-lists" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../../.." title="Aux Docs" class="md-header__button md-logo" aria-label="Aux Docs" data-md-component="logo">
<img src="../../../assets/aux-logo.svg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Aux Docs
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
lib.lists: list manipulation functions
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="blue" aria-label="Dark Mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Dark Mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3 3.19.09m3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95 2.06.05m-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31Z"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="blue" aria-label="Light Mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Light Mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5c-.84 0-1.65.15-2.39.42L12 2M3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29L3.34 7m.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14L3.36 17M20.65 7l-1.77 3.79a7.023 7.023 0 0 0-2.38-4.15l4.15.36m-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29L20.64 17M12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44L12 22Z"/></svg>
</label>
</form>
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://git.auxolotl.org/auxolotl/docs" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.777 0a2.9 2.9 0 1 1-2.529 4.322H12.91a4.266 4.266 0 0 0-4.265 4.195v2.118a7.076 7.076 0 0 1 4.147-1.42l.118-.002h1.338a2.9 2.9 0 0 1 5.43 1.422 2.9 2.9 0 0 1-5.43 1.422H12.91a4.266 4.266 0 0 0-4.265 4.195v2.319A2.9 2.9 0 0 1 7.222 24 2.9 2.9 0 0 1 5.8 18.57V8.589a7.109 7.109 0 0 1 6.991-7.108l.118-.001h1.338A2.9 2.9 0 0 1 16.778 0ZM7.223 19.905a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Zm9.554-10.464a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.39Zm0-7.735a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Z"/></svg>
</div>
<div class="md-source__repository">
auxolotl/docs
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../../.." class="md-tabs__link">
Aux Documentation Hub
</a>
</li>
<li class="md-tabs__item">
<a href="../../../TODO/" class="md-tabs__link">
TODO
</a>
</li>
<li class="md-tabs__item">
<a href="../../../Aux/" class="md-tabs__link">
Aux
</a>
</li>
<li class="md-tabs__item">
<a href="../../../Lix/" class="md-tabs__link">
Lix
</a>
</li>
<li class="md-tabs__item">
<a href="../../../NixOS/appstream/" class="md-tabs__link">
NixOS
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../../" class="md-tabs__link">
Nixpkgs
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../../.." title="Aux Docs" class="md-nav__button md-logo" aria-label="Aux Docs" data-md-component="logo">
<img src="../../../assets/aux-logo.svg" alt="logo">
</a>
Aux Docs
</label>
<div class="md-nav__source">
<a href="https://git.auxolotl.org/auxolotl/docs" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.777 0a2.9 2.9 0 1 1-2.529 4.322H12.91a4.266 4.266 0 0 0-4.265 4.195v2.118a7.076 7.076 0 0 1 4.147-1.42l.118-.002h1.338a2.9 2.9 0 0 1 5.43 1.422 2.9 2.9 0 0 1-5.43 1.422H12.91a4.266 4.266 0 0 0-4.265 4.195v2.319A2.9 2.9 0 0 1 7.222 24 2.9 2.9 0 0 1 5.8 18.57V8.589a7.109 7.109 0 0 1 6.991-7.108l.118-.001h1.338A2.9 2.9 0 0 1 16.778 0ZM7.223 19.905a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Zm9.554-10.464a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.39Zm0-7.735a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Z"/></svg>
</div>
<div class="md-source__repository">
auxolotl/docs
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../.." class="md-nav__link">
<span class="md-ellipsis">
Aux Documentation Hub
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../TODO/" class="md-nav__link">
<span class="md-ellipsis">
TODO
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../../Aux/" class="md-nav__link">
<span class="md-ellipsis">
Aux
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../../Lix/" class="md-nav__link">
<span class="md-ellipsis">
Lix
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../../NixOS/appstream/" class="md-nav__link">
<span class="md-ellipsis">
NixOS
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" checked>
<div class="md-nav__link md-nav__container">
<a href="../../" class="md-nav__link ">
<span class="md-ellipsis">
Nixpkgs
</span>
</a>
<label class="md-nav__link " for="__nav_6" id="__nav_6_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Nixpkgs
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../options/" class="md-nav__link">
<span class="md-ellipsis">
Options
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../Build-Helpers/" class="md-nav__link">
<span class="md-ellipsis">
Build Helpers
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../Development/" class="md-nav__link">
<span class="md-ellipsis">
Development
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../Functions/" class="md-nav__link">
<span class="md-ellipsis">
Functions
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../Hooks/" class="md-nav__link">
<span class="md-ellipsis">
Hooks
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../Languages-And-Frameworks/" class="md-nav__link">
<span class="md-ellipsis">
Languages And Frameworks
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_8" checked>
<label class="md-nav__link" for="__nav_6_8" id="__nav_6_8_label" tabindex="0">
<span class="md-ellipsis">
Library Reference
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_8_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_6_8">
<span class="md-nav__icon md-icon"></span>
Library Reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../asserts/" class="md-nav__link">
<span class="md-ellipsis">
lib.asserts: assertion functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../attrsets/" class="md-nav__link">
<span class="md-ellipsis">
lib.attrsets: attribute set functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/" class="md-nav__link">
<span class="md-ellipsis">
lib.cli: command-line serialization functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../customisation/" class="md-nav__link">
<span class="md-ellipsis">
lib.customisation: Functions to customise (derivation-related) functions, derivatons, or attribute sets
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../debug/" class="md-nav__link">
<span class="md-ellipsis">
lib.debug: debugging functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../derivations/" class="md-nav__link">
<span class="md-ellipsis">
lib.derivations: miscellaneous derivation-specific functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../fileset/" class="md-nav__link">
<span class="md-ellipsis">
lib.fileset: file set functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../filesystem/" class="md-nav__link">
<span class="md-ellipsis">
lib.filesystem: filesystem functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../fixedPoints/" class="md-nav__link">
<span class="md-ellipsis">
lib.fixedPoints: explicit recursion functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../generators/" class="md-nav__link">
<span class="md-ellipsis">
lib.generators: functions that create file formats from nix data structures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../gvariant/" class="md-nav__link">
<span class="md-ellipsis">
lib.gvariant: GVariant formatted string serialization functions
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
lib.lists: list manipulation functions
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
lib.lists: list manipulation functions
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#function-library-lib.lists.singleton" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.singleton
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.singleton">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.forEach" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.forEach
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.forEach">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_1" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_1" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_1" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.foldr" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.foldr
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.foldr">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_2" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_2" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_2" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.fold" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.fold
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.foldl" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.foldl
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.foldl">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_3" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_3" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_3" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.foldl-prime" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.foldl'
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.foldl'">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_4" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_4" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_4" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.imap0" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.imap0
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.imap0">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_5" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_5" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_5" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.imap1" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.imap1
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.imap1">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_6" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_6" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_6" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.ifilter0" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.ifilter0
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.ifilter0">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_7" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_7" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_7" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.concatMap" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.concatMap
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.concatMap">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#type_8" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_8" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.flatten" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.flatten
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.flatten">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_8" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_9" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.remove" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.remove
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.remove">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_9" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_9" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_10" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.findSingle" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.findSingle
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.findSingle">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_10" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_10" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_11" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.findFirstIndex" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.findFirstIndex
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.findFirstIndex">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_11" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_11" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_12" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.findFirst" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.findFirst
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.findFirst">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_12" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_12" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_13" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.any" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.any
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.any">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_13" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_13" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_14" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.all" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.all
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.all">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_14" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_14" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_15" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.count" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.count
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.count">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_15" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_15" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_16" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.optional" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.optional
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.optional">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_16" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_16" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_17" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.optionals" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.optionals
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.optionals">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_17" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_17" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_18" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.toList" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.toList
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.toList">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_18" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_19" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.range" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.range
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.range">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_19" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_18" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_20" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.replicate" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.replicate
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.replicate">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_20" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_19" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_21" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.partition" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.partition
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.partition">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_21" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_20" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_22" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.groupBy-prime" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.groupBy'
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.groupBy'">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_22" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_23" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.zipListsWith" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.zipListsWith
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.zipListsWith">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_23" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_21" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_24" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.zipLists" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.zipLists
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.zipLists">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_24" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_22" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_25" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.reverseList" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.reverseList
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.reverseList">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_25" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_23" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_26" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.listDfs" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.listDfs
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.listDfs">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_26" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_27" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.toposort" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.toposort
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.toposort">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_27" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_28" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.sort" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.sort
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.sort">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_28" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_24" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_29" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.sortOn" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.sortOn
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.sortOn">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_29" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_25" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_30" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.compareLists" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.compareLists
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.compareLists">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_30" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_31" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.naturalSort" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.naturalSort
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.naturalSort">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_31" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_32" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.take" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.take
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.take">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_32" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_26" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_33" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.drop" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.drop
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.drop">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_33" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_27" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_34" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.hasPrefix" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.hasPrefix
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.hasPrefix">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_34" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_28" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_35" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.removePrefix" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.removePrefix
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.removePrefix">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_35" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_29" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_36" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.sublist" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.sublist
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.sublist">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_36" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_30" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_37" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.commonPrefix" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.commonPrefix
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.commonPrefix">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_37" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_31" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_38" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.last" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.last
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.last">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_38" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_32" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_39" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.init" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.init
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.init">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_39" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_33" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_40" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.crossLists" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.crossLists
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.crossLists">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#examples_41" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.unique" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.unique
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.unique">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_40" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_34" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_42" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.allUnique" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.allUnique
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.allUnique">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_41" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_35" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_43" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.intersectLists" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.intersectLists
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.intersectLists">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_42" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_44" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.subtractLists" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.subtractLists
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.subtractLists">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_43" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_45" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.mutuallyExclusive" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.mutuallyExclusive
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.mutuallyExclusive">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_44" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../meta/" class="md-nav__link">
<span class="md-ellipsis">
lib.meta: functions for derivation metadata
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../options/" class="md-nav__link">
<span class="md-ellipsis">
lib.options: NixOS / nixpkgs option handling
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../path/" class="md-nav__link">
<span class="md-ellipsis">
lib.path: path functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sources/" class="md-nav__link">
<span class="md-ellipsis">
lib.sources: source filtering functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../strings/" class="md-nav__link">
<span class="md-ellipsis">
lib.strings: string manipulation functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../trivial/" class="md-nav__link">
<span class="md-ellipsis">
lib.trivial: miscellaneous functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../versions/" class="md-nav__link">
<span class="md-ellipsis">
lib.versions: version string functions
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../Module-System/module-system.chapter/" class="md-nav__link">
<span class="md-ellipsis">
Module System
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../Packages/" class="md-nav__link">
<span class="md-ellipsis">
Packages
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../Standard-Environment/" class="md-nav__link">
<span class="md-ellipsis">
Standard Environment
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../Using-Nixpkgs/" class="md-nav__link">
<span class="md-ellipsis">
Using Nixpkgs
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#function-library-lib.lists.singleton" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.singleton
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.singleton">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.forEach" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.forEach
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.forEach">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_1" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_1" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_1" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.foldr" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.foldr
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.foldr">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_2" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_2" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_2" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.fold" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.fold
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.foldl" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.foldl
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.foldl">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_3" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_3" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_3" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.foldl-prime" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.foldl'
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.foldl'">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_4" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_4" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_4" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.imap0" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.imap0
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.imap0">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_5" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_5" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_5" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.imap1" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.imap1
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.imap1">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_6" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_6" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_6" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.ifilter0" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.ifilter0
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.ifilter0">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_7" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_7" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_7" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.concatMap" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.concatMap
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.concatMap">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#type_8" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_8" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.flatten" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.flatten
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.flatten">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_8" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_9" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.remove" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.remove
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.remove">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_9" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_9" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_10" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.findSingle" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.findSingle
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.findSingle">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_10" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_10" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_11" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.findFirstIndex" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.findFirstIndex
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.findFirstIndex">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_11" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_11" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_12" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.findFirst" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.findFirst
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.findFirst">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_12" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_12" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_13" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.any" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.any
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.any">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_13" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_13" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_14" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.all" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.all
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.all">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_14" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_14" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_15" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.count" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.count
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.count">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_15" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_15" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_16" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.optional" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.optional
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.optional">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_16" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_16" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_17" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.optionals" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.optionals
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.optionals">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_17" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_17" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_18" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.toList" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.toList
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.toList">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_18" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_19" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.range" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.range
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.range">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_19" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_18" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_20" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.replicate" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.replicate
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.replicate">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_20" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_19" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_21" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.partition" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.partition
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.partition">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_21" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_20" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_22" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.groupBy-prime" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.groupBy'
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.groupBy'">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_22" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_23" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.zipListsWith" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.zipListsWith
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.zipListsWith">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_23" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_21" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_24" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.zipLists" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.zipLists
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.zipLists">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_24" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_22" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_25" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.reverseList" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.reverseList
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.reverseList">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_25" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_23" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_26" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.listDfs" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.listDfs
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.listDfs">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_26" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_27" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.toposort" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.toposort
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.toposort">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_27" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_28" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.sort" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.sort
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.sort">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_28" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_24" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_29" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.sortOn" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.sortOn
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.sortOn">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_29" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_25" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_30" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.compareLists" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.compareLists
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.compareLists">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_30" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_31" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.naturalSort" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.naturalSort
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.naturalSort">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_31" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_32" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.take" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.take
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.take">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_32" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_26" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_33" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.drop" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.drop
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.drop">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_33" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_27" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_34" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.hasPrefix" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.hasPrefix
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.hasPrefix">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_34" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_28" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_35" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.removePrefix" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.removePrefix
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.removePrefix">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_35" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_29" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_36" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.sublist" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.sublist
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.sublist">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_36" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_30" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_37" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.commonPrefix" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.commonPrefix
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.commonPrefix">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_37" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_31" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_38" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.last" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.last
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.last">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_38" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_32" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_39" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.init" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.init
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.init">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_39" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_33" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_40" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.crossLists" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.crossLists
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.crossLists">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#examples_41" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.unique" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.unique
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.unique">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_40" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_34" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_42" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.allUnique" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.allUnique
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.allUnique">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_41" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_35" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_43" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.intersectLists" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.intersectLists
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.intersectLists">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_42" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_44" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.subtractLists" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.subtractLists
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.subtractLists">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_43" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_45" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.lists.mutuallyExclusive" class="md-nav__link">
<span class="md-ellipsis">
lib.lists.mutuallyExclusive
</span>
</a>
<nav class="md-nav" aria-label="lib.lists.mutuallyExclusive">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_44" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="sec-functions-library-lists">lib.lists: list manipulation functions</h1>
<p>General list operations.</p>
<h2 id="function-library-lib.lists.singleton"><code>lib.lists.singleton</code></h2>
<p>Create a list consisting of a single element. <code>singleton x</code> is
sometimes more convenient with respect to indentation than <code>[x]</code>
when x spans multiple lines.</p>
<h3 id="inputs">Inputs</h3>
<p><code>x</code></p>
<p>: 1. Function argument</p>
<h3 id="type">Type</h3>
<div class="highlight"><pre><span></span><code>singleton :: a -&gt; [a]
</code></pre></div>
<h3 id="examples">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.singleton</code> usage example</p>
<div class="highlight"><pre><span></span><code>singleton <span class="s2">&quot;foo&quot;</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;foo&quot;</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L42">lib/lists.nix:42</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.forEach"><code>lib.lists.forEach</code></h2>
<p>Apply the function to each element in the list.
Same as <code>map</code>, but arguments flipped.</p>
<h3 id="inputs_1">Inputs</h3>
<p><code>xs</code></p>
<p>: 1. Function argument</p>
<p><code>f</code></p>
<p>: 2. Function argument</p>
<h3 id="type_1">Type</h3>
<div class="highlight"><pre><span></span><code>forEach :: [a] -&gt; (a -&gt; b) -&gt; [b]
</code></pre></div>
<h3 id="examples_1">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.forEach</code> usage example</p>
<div class="highlight"><pre><span></span><code>forEach <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">]</span> <span class="p">(</span>x<span class="p">:</span>
<span class="nb">toString</span> x
<span class="p">)</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;1&quot;</span> <span class="s2">&quot;2&quot;</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L77">lib/lists.nix:77</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.foldr"><code>lib.lists.foldr</code></h2>
<p>“right fold” a binary function <code>op</code> between successive elements of
<code>list</code> with <code>nul</code> as the starting value, i.e.,
<code>foldr op nul [x_1 x_2 ... x_n] == op x_1 (op x_2 ... (op x_n nul))</code>.</p>
<h3 id="inputs_2">Inputs</h3>
<p><code>op</code></p>
<p>: 1. Function argument</p>
<p><code>nul</code></p>
<p>: 2. Function argument</p>
<p><code>list</code></p>
<p>: 3. Function argument</p>
<h3 id="type_2">Type</h3>
<div class="highlight"><pre><span></span><code>foldr :: (a -&gt; b -&gt; b) -&gt; b -&gt; [a] -&gt; b
</code></pre></div>
<h3 id="examples_2">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.foldr</code> usage example</p>
<div class="highlight"><pre><span></span><code><span class="ss">concat</span> <span class="o">=</span> foldr <span class="p">(</span>a<span class="p">:</span> b<span class="p">:</span> a <span class="o">+</span> b<span class="p">)</span> <span class="s2">&quot;z&quot;</span>
concat <span class="p">[</span> <span class="s2">&quot;a&quot;</span> <span class="s2">&quot;b&quot;</span> <span class="s2">&quot;c&quot;</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="s2">&quot;abcz&quot;</span>
<span class="c1"># different types</span>
<span class="ss">strange</span> <span class="o">=</span> foldr <span class="p">(</span>int<span class="p">:</span> str<span class="p">:</span> <span class="nb">toString</span> <span class="p">(</span>int <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> str<span class="p">)</span> <span class="s2">&quot;a&quot;</span>
strange <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="s2">&quot;2345a&quot;</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L121">lib/lists.nix:121</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.fold"><code>lib.lists.fold</code></h2>
<p><code>fold</code> is an alias of <code>foldr</code> for historic reasons</p>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L134">lib/lists.nix:134</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.foldl"><code>lib.lists.foldl</code></h2>
<p>“left fold”, like <code>foldr</code>, but from the left:</p>
<p><code>foldl op nul [x_1 x_2 ... x_n] == op (... (op (op nul x_1) x_2) ... x_n)</code>.</p>
<h3 id="inputs_3">Inputs</h3>
<p><code>op</code></p>
<p>: 1. Function argument</p>
<p><code>nul</code></p>
<p>: 2. Function argument</p>
<p><code>list</code></p>
<p>: 3. Function argument</p>
<h3 id="type_3">Type</h3>
<div class="highlight"><pre><span></span><code>foldl :: (b -&gt; a -&gt; b) -&gt; b -&gt; [a] -&gt; b
</code></pre></div>
<h3 id="examples_3">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.foldl</code> usage example</p>
<div class="highlight"><pre><span></span><code><span class="ss">lconcat</span> <span class="o">=</span> foldl <span class="p">(</span>a<span class="p">:</span> b<span class="p">:</span> a <span class="o">+</span> b<span class="p">)</span> <span class="s2">&quot;z&quot;</span>
lconcat <span class="p">[</span> <span class="s2">&quot;a&quot;</span> <span class="s2">&quot;b&quot;</span> <span class="s2">&quot;c&quot;</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="s2">&quot;zabc&quot;</span>
<span class="c1"># different types</span>
<span class="ss">lstrange</span> <span class="o">=</span> foldl <span class="p">(</span>str<span class="p">:</span> int<span class="p">:</span> str <span class="o">+</span> <span class="nb">toString</span> <span class="p">(</span>int <span class="o">+</span> <span class="mi">1</span><span class="p">))</span> <span class="s2">&quot;a&quot;</span>
lstrange <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="s2">&quot;a2345&quot;</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L178">lib/lists.nix:178</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.foldl-prime"><code>lib.lists.foldl'</code></h2>
<p>Reduce a list by applying a binary operator from left to right,
starting with an initial accumulator.</p>
<p>Before each application of the operator, the accumulator value is evaluated.
This behavior makes this function stricter than <a href="#function-library-lib.lists.foldl"><code>foldl</code></a>.</p>
<p>Unlike <a href="https://nixos.org/manual/nix/unstable/language/builtins.html#builtins-foldl'"><code>builtins.foldl'</code></a>,
the initial accumulator argument is evaluated before the first iteration.</p>
<p>A call like</p>
<div class="highlight"><pre><span></span><code>foldl&#39; op acc₀ <span class="p">[</span> x₀ x₁ x₂ <span class="o">...</span> xₙ<span class="err">₋₁</span> xₙ <span class="p">]</span>
</code></pre></div>
<p>is (denotationally) equivalent to the following,
but with the added benefit that <code>foldl'</code> itself will never overflow the stack.</p>
<div class="highlight"><pre><span></span><code><span class="k">let</span>
<span class="ss">acc₁</span> <span class="o">=</span> <span class="nb">builtins</span><span class="o">.</span>seq acc₀ <span class="p">(</span>op acc₀ x₀ <span class="p">);</span>
<span class="ss">acc₂</span> <span class="o">=</span> <span class="nb">builtins</span><span class="o">.</span>seq acc₁ <span class="p">(</span>op acc₁ x₁ <span class="p">);</span>
<span class="ss">acc₃</span> <span class="o">=</span> <span class="nb">builtins</span><span class="o">.</span>seq acc₂ <span class="p">(</span>op acc₂ x₂ <span class="p">);</span>
<span class="o">...</span>
<span class="ss">accₙ</span> <span class="o">=</span> <span class="nb">builtins</span><span class="o">.</span>seq accₙ<span class="err">₋₁</span> <span class="p">(</span>op accₙ<span class="err">₋₁</span> xₙ<span class="err">₋₁</span><span class="p">);</span>
accₙ<span class="err"></span><span class="ss"></span> <span class="o">=</span> <span class="nb">builtins</span><span class="o">.</span>seq accₙ <span class="p">(</span>op accₙ xₙ <span class="p">);</span>
<span class="k">in</span>
accₙ<span class="err">₊₁</span> <span class="s2">&quot;Or ignoring builtins.seq</span>
<span class="s2">op (op (... (op (op (op acc₀ x₀) x₁) x₂) ...) xₙ₋₁) xₙ</span>
</code></pre></div>
<h3 id="inputs_4">Inputs</h3>
<p><code>op</code></p>
<p>: The binary operation to run, where the two arguments are:</p>
<ol>
<li><code>acc</code>: The current accumulator value: Either the initial one for the first iteration, or the result of the previous iteration</li>
<li><code>x</code>: The corresponding list element for this iteration</li>
</ol>
<p><code>acc</code></p>
<p>: The initial accumulator value.</p>
<p>The accumulator value is evaluated in any case before the first iteration starts.</p>
<p>To avoid evaluation even before the <code>list</code> argument is given an eta expansion can be used:</p>
<div class="highlight"><pre><span></span><code>list<span class="p">:</span> lib<span class="o">.</span>foldl&#39; op acc list
</code></pre></div>
<p><code>list</code></p>
<p>: The list to fold</p>
<h3 id="type_4">Type</h3>
<div class="highlight"><pre><span></span><code>foldl&#39; :: (acc -&gt; x -&gt; acc) -&gt; acc -&gt; [x] -&gt; acc
</code></pre></div>
<h3 id="examples_4">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.foldl'</code> usage example</p>
<div class="highlight"><pre><span></span><code>foldl&#39; <span class="p">(</span>acc<span class="p">:</span> x<span class="p">:</span> acc <span class="o">+</span> x<span class="p">)</span> <span class="mi">0</span> <span class="p">[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span><span class="p">]</span>
<span class="o">=&gt;</span> <span class="mi">6</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L262">lib/lists.nix:262</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.imap0"><code>lib.lists.imap0</code></h2>
<p>Map with index starting from 0</p>
<h3 id="inputs_5">Inputs</h3>
<p><code>f</code></p>
<p>: 1. Function argument</p>
<p><code>list</code></p>
<p>: 2. Function argument</p>
<h3 id="type_5">Type</h3>
<div class="highlight"><pre><span></span><code>imap0 :: (int -&gt; a -&gt; b) -&gt; [a] -&gt; [b]
</code></pre></div>
<h3 id="examples_5">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.imap0</code> usage example</p>
<div class="highlight"><pre><span></span><code>imap0 <span class="p">(</span>i<span class="p">:</span> v<span class="p">:</span> <span class="s2">&quot;</span><span class="si">${</span>v<span class="si">}</span><span class="s2">-</span><span class="si">${</span><span class="nb">toString</span> i<span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> <span class="p">[</span><span class="s2">&quot;a&quot;</span> <span class="s2">&quot;b&quot;</span><span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;a-0&quot;</span> <span class="s2">&quot;b-1&quot;</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L301">lib/lists.nix:301</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.imap1"><code>lib.lists.imap1</code></h2>
<p>Map with index starting from 1</p>
<h3 id="inputs_6">Inputs</h3>
<p><code>f</code></p>
<p>: 1. Function argument</p>
<p><code>list</code></p>
<p>: 2. Function argument</p>
<h3 id="type_6">Type</h3>
<div class="highlight"><pre><span></span><code>imap1 :: (int -&gt; a -&gt; b) -&gt; [a] -&gt; [b]
</code></pre></div>
<h3 id="examples_6">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.imap1</code> usage example</p>
<div class="highlight"><pre><span></span><code>imap1 <span class="p">(</span>i<span class="p">:</span> v<span class="p">:</span> <span class="s2">&quot;</span><span class="si">${</span>v<span class="si">}</span><span class="s2">-</span><span class="si">${</span><span class="nb">toString</span> i<span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> <span class="p">[</span><span class="s2">&quot;a&quot;</span> <span class="s2">&quot;b&quot;</span><span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;a-1&quot;</span> <span class="s2">&quot;b-2&quot;</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L334">lib/lists.nix:334</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.ifilter0"><code>lib.lists.ifilter0</code></h2>
<p>Filter a list for elements that satisfy a predicate function.
The predicate function is called with both the index and value for each element.
It must return <code>true</code>/<code>false</code> to include/exclude a given element in the result.
This function is strict in the result of the predicate function for each element.
This function has O(n) complexity.</p>
<p>Also see <a href="https://nixos.org/manual/nix/stable/language/builtins.html#builtins-filter"><code>builtins.filter</code></a> (available as <code>lib.lists.filter</code>),
which can be used instead when the index isn't needed.</p>
<h3 id="inputs_7">Inputs</h3>
<p><code>ipred</code></p>
<p>: The predicate function, it takes two arguments:
- 1. (int): the index of the element.
- 2. (a): the value of the element.</p>
<p>It must return <code>true</code>/<code>false</code> to include/exclude a given element from the result.</p>
<p><code>list</code></p>
<p>: The list to filter using the predicate.</p>
<h3 id="type_7">Type</h3>
<div class="highlight"><pre><span></span><code>ifilter0 :: (int -&gt; a -&gt; bool) -&gt; [a] -&gt; [a]
</code></pre></div>
<h3 id="examples_7">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.ifilter0</code> usage example</p>
<div class="highlight"><pre><span></span><code>ifilter0 <span class="p">(</span>i<span class="p">:</span> v<span class="p">:</span> <span class="ss">i</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> v <span class="o">&gt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">3</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L375">lib/lists.nix:375</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.concatMap"><code>lib.lists.concatMap</code></h2>
<p>Map and concatenate the result.</p>
<h3 id="type_8">Type</h3>
<div class="highlight"><pre><span></span><code>concatMap :: (a -&gt; [b]) -&gt; [a] -&gt; [b]
</code></pre></div>
<h3 id="examples_8">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.concatMap</code> usage example</p>
<div class="highlight"><pre><span></span><code>concatMap <span class="p">(</span>x<span class="p">:</span> <span class="p">[</span>x<span class="p">]</span> <span class="o">++</span> <span class="p">[</span><span class="s2">&quot;z&quot;</span><span class="p">])</span> <span class="p">[</span><span class="s2">&quot;a&quot;</span> <span class="s2">&quot;b&quot;</span><span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;a&quot;</span> <span class="s2">&quot;z&quot;</span> <span class="s2">&quot;b&quot;</span> <span class="s2">&quot;z&quot;</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L404">lib/lists.nix:404</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.flatten"><code>lib.lists.flatten</code></h2>
<p>Flatten the argument into a single list; that is, nested lists are
spliced into the top-level lists.</p>
<h3 id="inputs_8">Inputs</h3>
<p><code>x</code></p>
<p>: 1. Function argument</p>
<h3 id="examples_9">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.flatten</code> usage example</p>
<div class="highlight"><pre><span></span><code>flatten <span class="p">[</span><span class="mi">1</span> <span class="p">[</span><span class="mi">2</span> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="mi">4</span><span class="p">]</span> <span class="mi">5</span><span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span><span class="p">]</span>
flatten <span class="mi">1</span>
<span class="o">=&gt;</span> <span class="p">[</span><span class="mi">1</span><span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L431">lib/lists.nix:431</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.remove"><code>lib.lists.remove</code></h2>
<p>Remove elements equal to 'e' from a list. Useful for buildInputs.</p>
<h3 id="inputs_9">Inputs</h3>
<p><code>e</code></p>
<p>: Element to remove from <code>list</code></p>
<p><code>list</code></p>
<p>: The list</p>
<h3 id="type_9">Type</h3>
<div class="highlight"><pre><span></span><code>remove :: a -&gt; [a] -&gt; [a]
</code></pre></div>
<h3 id="examples_10">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.remove</code> usage example</p>
<div class="highlight"><pre><span></span><code>remove <span class="mi">3</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">3</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">4</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L467">lib/lists.nix:467</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.findSingle"><code>lib.lists.findSingle</code></h2>
<p>Find the sole element in the list matching the specified
predicate.</p>
<p>Returns <code>default</code> if no such element exists, or
<code>multiple</code> if there are multiple matching elements.</p>
<h3 id="inputs_10">Inputs</h3>
<p><code>pred</code></p>
<p>: Predicate</p>
<p><code>default</code></p>
<p>: Default value to return if element was not found.</p>
<p><code>multiple</code></p>
<p>: Default value to return if more than one element was found</p>
<p><code>list</code></p>
<p>: Input list</p>
<h3 id="type_10">Type</h3>
<div class="highlight"><pre><span></span><code>findSingle :: (a -&gt; bool) -&gt; a -&gt; a -&gt; [a] -&gt; a
</code></pre></div>
<h3 id="examples_11">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.findSingle</code> usage example</p>
<div class="highlight"><pre><span></span><code>findSingle <span class="p">(</span>x<span class="p">:</span> <span class="ss">x</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="s2">&quot;none&quot;</span> <span class="s2">&quot;multiple&quot;</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">3</span> <span class="mi">3</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="s2">&quot;multiple&quot;</span>
findSingle <span class="p">(</span>x<span class="p">:</span> <span class="ss">x</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="s2">&quot;none&quot;</span> <span class="s2">&quot;multiple&quot;</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">3</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="mi">3</span>
findSingle <span class="p">(</span>x<span class="p">:</span> <span class="ss">x</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="s2">&quot;none&quot;</span> <span class="s2">&quot;multiple&quot;</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">9</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="s2">&quot;none&quot;</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L517">lib/lists.nix:517</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.findFirstIndex"><code>lib.lists.findFirstIndex</code></h2>
<p>Find the first index in the list matching the specified
predicate or return <code>default</code> if no such element exists.</p>
<h3 id="inputs_11">Inputs</h3>
<p><code>pred</code></p>
<p>: Predicate</p>
<p><code>default</code></p>
<p>: Default value to return</p>
<p><code>list</code></p>
<p>: Input list</p>
<h3 id="type_11">Type</h3>
<div class="highlight"><pre><span></span><code>findFirstIndex :: (a -&gt; Bool) -&gt; b -&gt; [a] -&gt; (Int | b)
</code></pre></div>
<h3 id="examples_12">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.findFirstIndex</code> usage example</p>
<div class="highlight"><pre><span></span><code>findFirstIndex <span class="p">(</span>x<span class="p">:</span> x <span class="o">&gt;</span> <span class="mi">3</span><span class="p">)</span> <span class="no">null</span> <span class="p">[</span> <span class="mi">0</span> <span class="mi">6</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="mi">1</span>
findFirstIndex <span class="p">(</span>x<span class="p">:</span> x <span class="o">&gt;</span> <span class="mi">9</span><span class="p">)</span> <span class="no">null</span> <span class="p">[</span> <span class="mi">0</span> <span class="mi">6</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="no">null</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L564">lib/lists.nix:564</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.findFirst"><code>lib.lists.findFirst</code></h2>
<p>Find the first element in the list matching the specified
predicate or return <code>default</code> if no such element exists.</p>
<h3 id="inputs_12">Inputs</h3>
<p><code>pred</code></p>
<p>: Predicate</p>
<p><code>default</code></p>
<p>: Default value to return</p>
<p><code>list</code></p>
<p>: Input list</p>
<h3 id="type_12">Type</h3>
<div class="highlight"><pre><span></span><code>findFirst :: (a -&gt; bool) -&gt; a -&gt; [a] -&gt; a
</code></pre></div>
<h3 id="examples_13">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.findFirst</code> usage example</p>
<div class="highlight"><pre><span></span><code>findFirst <span class="p">(</span>x<span class="p">:</span> x <span class="o">&gt;</span> <span class="mi">3</span><span class="p">)</span> <span class="mi">7</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">6</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="mi">6</span>
findFirst <span class="p">(</span>x<span class="p">:</span> x <span class="o">&gt;</span> <span class="mi">9</span><span class="p">)</span> <span class="mi">7</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">6</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="mi">7</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L638">lib/lists.nix:638</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.any"><code>lib.lists.any</code></h2>
<p>Return true if function <code>pred</code> returns true for at least one
element of <code>list</code>.</p>
<h3 id="inputs_13">Inputs</h3>
<p><code>pred</code></p>
<p>: Predicate</p>
<p><code>list</code></p>
<p>: Input list</p>
<h3 id="type_13">Type</h3>
<div class="highlight"><pre><span></span><code>any :: (a -&gt; bool) -&gt; [a] -&gt; bool
</code></pre></div>
<h3 id="examples_14">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.any</code> usage example</p>
<div class="highlight"><pre><span></span><code>any isString <span class="p">[</span> <span class="mi">1</span> <span class="s2">&quot;a&quot;</span> <span class="p">{</span> <span class="p">}</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="no">true</span>
any isString <span class="p">[</span> <span class="mi">1</span> <span class="p">{</span> <span class="p">}</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="no">false</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L683">lib/lists.nix:683</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.all"><code>lib.lists.all</code></h2>
<p>Return true if function <code>pred</code> returns true for all elements of
<code>list</code>.</p>
<h3 id="inputs_14">Inputs</h3>
<p><code>pred</code></p>
<p>: Predicate</p>
<p><code>list</code></p>
<p>: Input list</p>
<h3 id="type_14">Type</h3>
<div class="highlight"><pre><span></span><code>all :: (a -&gt; bool) -&gt; [a] -&gt; bool
</code></pre></div>
<h3 id="examples_15">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.all</code> usage example</p>
<div class="highlight"><pre><span></span><code>all <span class="p">(</span>x<span class="p">:</span> x <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="no">true</span>
all <span class="p">(</span>x<span class="p">:</span> x <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="no">false</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L718">lib/lists.nix:718</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.count"><code>lib.lists.count</code></h2>
<p>Count how many elements of <code>list</code> match the supplied predicate
function.</p>
<h3 id="inputs_15">Inputs</h3>
<p><code>pred</code></p>
<p>: Predicate</p>
<h3 id="type_15">Type</h3>
<div class="highlight"><pre><span></span><code>count :: (a -&gt; bool) -&gt; [a] -&gt; int
</code></pre></div>
<h3 id="examples_16">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.count</code> usage example</p>
<div class="highlight"><pre><span></span><code>count <span class="p">(</span>x<span class="p">:</span> <span class="ss">x</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="p">[</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">6</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="mi">2</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L747">lib/lists.nix:747</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.optional"><code>lib.lists.optional</code></h2>
<p>Return a singleton list or an empty list, depending on a boolean
value. Useful when building lists with optional elements
(e.g. <code>++ optional (system == "i686-linux") firefox</code>).</p>
<h3 id="inputs_16">Inputs</h3>
<p><code>cond</code></p>
<p>: 1. Function argument</p>
<p><code>elem</code></p>
<p>: 2. Function argument</p>
<h3 id="type_16">Type</h3>
<div class="highlight"><pre><span></span><code>optional :: bool -&gt; a -&gt; [a]
</code></pre></div>
<h3 id="examples_17">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.optional</code> usage example</p>
<div class="highlight"><pre><span></span><code>optional <span class="no">true</span> <span class="s2">&quot;foo&quot;</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;foo&quot;</span> <span class="p">]</span>
optional <span class="no">false</span> <span class="s2">&quot;foo&quot;</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L784">lib/lists.nix:784</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.optionals"><code>lib.lists.optionals</code></h2>
<p>Return a list or an empty list, depending on a boolean value.</p>
<h3 id="inputs_17">Inputs</h3>
<p><code>cond</code></p>
<p>: Condition</p>
<p><code>elems</code></p>
<p>: List to return if condition is true</p>
<h3 id="type_17">Type</h3>
<div class="highlight"><pre><span></span><code>optionals :: bool -&gt; [a] -&gt; [a]
</code></pre></div>
<h3 id="examples_18">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.optionals</code> usage example</p>
<div class="highlight"><pre><span></span><code>optionals <span class="no">true</span> <span class="p">[</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">]</span>
optionals <span class="no">false</span> <span class="p">[</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L818">lib/lists.nix:818</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.toList"><code>lib.lists.toList</code></h2>
<p>If argument is a list, return it; else, wrap it in a singleton
list. If you're using this, you should almost certainly
reconsider if there isn't a more "well-typed" approach.</p>
<h3 id="inputs_18">Inputs</h3>
<p><code>x</code></p>
<p>: 1. Function argument</p>
<h3 id="examples_19">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.toList</code> usage example</p>
<div class="highlight"><pre><span></span><code>toList <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">]</span>
toList <span class="s2">&quot;hi&quot;</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;hi &quot;</span><span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L847">lib/lists.nix:847</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.range"><code>lib.lists.range</code></h2>
<p>Return a list of integers from <code>first</code> up to and including <code>last</code>.</p>
<h3 id="inputs_19">Inputs</h3>
<p><code>first</code></p>
<p>: First integer in the range</p>
<p><code>last</code></p>
<p>: Last integer in the range</p>
<h3 id="type_18">Type</h3>
<div class="highlight"><pre><span></span><code>range :: int -&gt; int -&gt; [int]
</code></pre></div>
<h3 id="examples_20">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.range</code> usage example</p>
<div class="highlight"><pre><span></span><code>range <span class="mi">2</span> <span class="mi">4</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">]</span>
range <span class="mi">3</span> <span class="mi">2</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L881">lib/lists.nix:881</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.replicate"><code>lib.lists.replicate</code></h2>
<p>Return a list with <code>n</code> copies of an element.</p>
<h3 id="inputs_20">Inputs</h3>
<p><code>n</code></p>
<p>: 1. Function argument</p>
<p><code>elem</code></p>
<p>: 2. Function argument</p>
<h3 id="type_19">Type</h3>
<div class="highlight"><pre><span></span><code>replicate :: int -&gt; a -&gt; [a]
</code></pre></div>
<h3 id="examples_21">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.replicate</code> usage example</p>
<div class="highlight"><pre><span></span><code>replicate <span class="mi">3</span> <span class="s2">&quot;a&quot;</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;a&quot;</span> <span class="s2">&quot;a&quot;</span> <span class="s2">&quot;a&quot;</span> <span class="p">]</span>
replicate <span class="mi">2</span> <span class="no">true</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="no">true</span> <span class="no">true</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L921">lib/lists.nix:921</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.partition"><code>lib.lists.partition</code></h2>
<p>Splits the elements of a list in two lists, <code>right</code> and
<code>wrong</code>, depending on the evaluation of a predicate.</p>
<h3 id="inputs_21">Inputs</h3>
<p><code>pred</code></p>
<p>: Predicate</p>
<p><code>list</code></p>
<p>: Input list</p>
<h3 id="type_20">Type</h3>
<div class="highlight"><pre><span></span><code>(a -&gt; bool) -&gt; [a] -&gt; { right :: [a]; wrong :: [a]; }
</code></pre></div>
<h3 id="examples_22">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.partition</code> usage example</p>
<div class="highlight"><pre><span></span><code>partition <span class="p">(</span>x<span class="p">:</span> x <span class="o">&gt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">[</span> <span class="mi">5</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">{</span> <span class="ss">right</span> <span class="o">=</span> <span class="p">[</span> <span class="mi">5</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">];</span> <span class="ss">wrong</span> <span class="o">=</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">];</span> <span class="p">}</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L954">lib/lists.nix:954</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.groupBy-prime"><code>lib.lists.groupBy'</code></h2>
<p>Splits the elements of a list into many lists, using the return value of a predicate.
Predicate should return a string which becomes keys of attrset <code>groupBy</code> returns.
<code>groupBy'</code> allows to customise the combining function and initial value</p>
<h3 id="inputs_22">Inputs</h3>
<p><code>op</code></p>
<p>: 1. Function argument</p>
<p><code>nul</code></p>
<p>: 2. Function argument</p>
<p><code>pred</code></p>
<p>: 3. Function argument</p>
<p><code>lst</code></p>
<p>: 4. Function argument</p>
<h3 id="examples_23">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.groupBy'</code> usage example</p>
<div class="highlight"><pre><span></span><code>groupBy <span class="p">(</span>x<span class="p">:</span> boolToString <span class="p">(</span>x <span class="o">&gt;</span> <span class="mi">2</span><span class="p">))</span> <span class="p">[</span> <span class="mi">5</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">{</span> <span class="no">true</span> <span class="o">=</span> <span class="p">[</span> <span class="mi">5</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">];</span> <span class="no">false</span> <span class="o">=</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">];</span> <span class="p">}</span>
groupBy <span class="p">(</span>x<span class="p">:</span> x<span class="o">.</span>name<span class="p">)</span> <span class="p">[</span> <span class="p">{</span><span class="ss">name</span> <span class="o">=</span> <span class="s2">&quot;icewm&quot;</span><span class="p">;</span> <span class="ss">script</span> <span class="o">=</span> <span class="s2">&quot;icewm &amp;&quot;</span><span class="p">;}</span>
<span class="p">{</span><span class="ss">name</span> <span class="o">=</span> <span class="s2">&quot;xfce&quot;</span><span class="p">;</span> <span class="ss">script</span> <span class="o">=</span> <span class="s2">&quot;xfce4-session &amp;&quot;</span><span class="p">;}</span>
<span class="p">{</span><span class="ss">name</span> <span class="o">=</span> <span class="s2">&quot;icewm&quot;</span><span class="p">;</span> <span class="ss">script</span> <span class="o">=</span> <span class="s2">&quot;icewmbg &amp;&quot;</span><span class="p">;}</span>
<span class="p">{</span><span class="ss">name</span> <span class="o">=</span> <span class="s2">&quot;mate&quot;</span><span class="p">;</span> <span class="ss">script</span> <span class="o">=</span> <span class="s2">&quot;gnome-session &amp;&quot;</span><span class="p">;}</span>
<span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">{</span> <span class="ss">icewm</span> <span class="o">=</span> <span class="p">[</span> <span class="p">{</span> <span class="ss">name</span> <span class="o">=</span> <span class="s2">&quot;icewm&quot;</span><span class="p">;</span> <span class="ss">script</span> <span class="o">=</span> <span class="s2">&quot;icewm &amp;&quot;</span><span class="p">;</span> <span class="p">}</span>
<span class="p">{</span> <span class="ss">name</span> <span class="o">=</span> <span class="s2">&quot;icewm&quot;</span><span class="p">;</span> <span class="ss">script</span> <span class="o">=</span> <span class="s2">&quot;icewmbg &amp;&quot;</span><span class="p">;</span> <span class="p">}</span> <span class="p">];</span>
<span class="ss">mate</span> <span class="o">=</span> <span class="p">[</span> <span class="p">{</span> <span class="ss">name</span> <span class="o">=</span> <span class="s2">&quot;mate&quot;</span><span class="p">;</span> <span class="ss">script</span> <span class="o">=</span> <span class="s2">&quot;gnome-session &amp;&quot;</span><span class="p">;</span> <span class="p">}</span> <span class="p">];</span>
<span class="ss">xfce</span> <span class="o">=</span> <span class="p">[</span> <span class="p">{</span> <span class="ss">name</span> <span class="o">=</span> <span class="s2">&quot;xfce&quot;</span><span class="p">;</span> <span class="ss">script</span> <span class="o">=</span> <span class="s2">&quot;xfce4-session &amp;&quot;</span><span class="p">;</span> <span class="p">}</span> <span class="p">];</span>
<span class="p">}</span>
groupBy&#39; <span class="nb">builtins</span><span class="o">.</span>add <span class="mi">0</span> <span class="p">(</span>x<span class="p">:</span> boolToString <span class="p">(</span>x <span class="o">&gt;</span> <span class="mi">2</span><span class="p">))</span> <span class="p">[</span> <span class="mi">5</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">{</span> <span class="no">true</span> <span class="o">=</span> <span class="mi">12</span><span class="p">;</span> <span class="no">false</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="p">}</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1004">lib/lists.nix:1004</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.zipListsWith"><code>lib.lists.zipListsWith</code></h2>
<p>Merges two lists of the same size together. If the sizes aren't the same
the merging stops at the shortest. How both lists are merged is defined
by the first argument.</p>
<h3 id="inputs_23">Inputs</h3>
<p><code>f</code></p>
<p>: Function to zip elements of both lists</p>
<p><code>fst</code></p>
<p>: First list</p>
<p><code>snd</code></p>
<p>: Second list</p>
<h3 id="type_21">Type</h3>
<div class="highlight"><pre><span></span><code>zipListsWith :: (a -&gt; b -&gt; c) -&gt; [a] -&gt; [b] -&gt; [c]
</code></pre></div>
<h3 id="examples_24">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.zipListsWith</code> usage example</p>
<div class="highlight"><pre><span></span><code>zipListsWith <span class="p">(</span>a<span class="p">:</span> b<span class="p">:</span> a <span class="o">+</span> b<span class="p">)</span> <span class="p">[</span><span class="s2">&quot;h&quot;</span> <span class="s2">&quot;l&quot;</span><span class="p">]</span> <span class="p">[</span><span class="s2">&quot;e&quot;</span> <span class="s2">&quot;o&quot;</span><span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span><span class="s2">&quot;he&quot;</span> <span class="s2">&quot;lo&quot;</span><span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1050">lib/lists.nix:1050</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.zipLists"><code>lib.lists.zipLists</code></h2>
<p>Merges two lists of the same size together. If the sizes aren't the same
the merging stops at the shortest.</p>
<h3 id="inputs_24">Inputs</h3>
<p><code>fst</code></p>
<p>: First list</p>
<p><code>snd</code></p>
<p>: Second list</p>
<h3 id="type_22">Type</h3>
<div class="highlight"><pre><span></span><code>zipLists :: [a] -&gt; [b] -&gt; [{ fst :: a; snd :: b; }]
</code></pre></div>
<h3 id="examples_25">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.zipLists</code> usage example</p>
<div class="highlight"><pre><span></span><code>zipLists <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">]</span> <span class="p">[</span> <span class="s2">&quot;a&quot;</span> <span class="s2">&quot;b&quot;</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="p">{</span> <span class="ss">fst</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="ss">snd</span> <span class="o">=</span> <span class="s2">&quot;a&quot;</span><span class="p">;</span> <span class="p">}</span> <span class="p">{</span> <span class="ss">fst</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="ss">snd</span> <span class="o">=</span> <span class="s2">&quot;b&quot;</span><span class="p">;</span> <span class="p">}</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1088">lib/lists.nix:1088</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.reverseList"><code>lib.lists.reverseList</code></h2>
<p>Reverse the order of the elements of a list.</p>
<h3 id="inputs_25">Inputs</h3>
<p><code>xs</code></p>
<p>: 1. Function argument</p>
<h3 id="type_23">Type</h3>
<div class="highlight"><pre><span></span><code>reverseList :: [a] -&gt; [a]
</code></pre></div>
<h3 id="examples_26">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.reverseList</code> usage example</p>
<div class="highlight"><pre><span></span><code>reverseList <span class="p">[</span> <span class="s2">&quot;b&quot;</span> <span class="s2">&quot;o&quot;</span> <span class="s2">&quot;j&quot;</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;j&quot;</span> <span class="s2">&quot;o&quot;</span> <span class="s2">&quot;b&quot;</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1116">lib/lists.nix:1116</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.listDfs"><code>lib.lists.listDfs</code></h2>
<p>Depth-First Search (DFS) for lists <code>list != []</code>.</p>
<p><code>before a b == true</code> means that <code>b</code> depends on <code>a</code> (there's an
edge from <code>b</code> to <code>a</code>).</p>
<h3 id="inputs_26">Inputs</h3>
<p><code>stopOnCycles</code></p>
<p>: 1. Function argument</p>
<p><code>before</code></p>
<p>: 2. Function argument</p>
<p><code>list</code></p>
<p>: 3. Function argument</p>
<h3 id="examples_27">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.listDfs</code> usage example</p>
<div class="highlight"><pre><span></span><code>listDfs <span class="no">true</span> hasPrefix <span class="p">[</span> <span class="s2">&quot;/home/user&quot;</span> <span class="s2">&quot;other&quot;</span> <span class="s2">&quot;/&quot;</span> <span class="s2">&quot;/home&quot;</span> <span class="p">]</span>
<span class="o">==</span> <span class="p">{</span> <span class="ss">minimal</span> <span class="o">=</span> <span class="s2">&quot;/&quot;</span><span class="p">;</span> <span class="c1"># minimal element</span>
<span class="ss">visited</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">&quot;/home/user&quot;</span> <span class="p">];</span> <span class="c1"># seen elements (in reverse order)</span>
<span class="ss">rest</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">&quot;/home&quot;</span> <span class="s2">&quot;other&quot;</span> <span class="p">];</span> <span class="c1"># everything else</span>
<span class="p">}</span>
listDfs <span class="no">true</span> hasPrefix <span class="p">[</span> <span class="s2">&quot;/home/user&quot;</span> <span class="s2">&quot;other&quot;</span> <span class="s2">&quot;/&quot;</span> <span class="s2">&quot;/home&quot;</span> <span class="s2">&quot;/&quot;</span> <span class="p">]</span>
<span class="o">==</span> <span class="p">{</span> <span class="ss">cycle</span> <span class="o">=</span> <span class="s2">&quot;/&quot;</span><span class="p">;</span> <span class="c1"># cycle encountered at this element</span>
<span class="ss">loops</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">&quot;/&quot;</span> <span class="p">];</span> <span class="c1"># and continues to these elements</span>
<span class="ss">visited</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">&quot;/&quot;</span> <span class="s2">&quot;/home/user&quot;</span> <span class="p">];</span> <span class="c1"># elements leading to the cycle (in reverse order)</span>
<span class="ss">rest</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">&quot;/home&quot;</span> <span class="s2">&quot;other&quot;</span> <span class="p">];</span> <span class="c1"># everything else</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1161">lib/lists.nix:1161</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.toposort"><code>lib.lists.toposort</code></h2>
<p>Sort a list based on a partial ordering using DFS. This
implementation is O(N^2), if your ordering is linear, use <code>sort</code>
instead.</p>
<p><code>before a b == true</code> means that <code>b</code> should be after <code>a</code>
in the result.</p>
<h3 id="inputs_27">Inputs</h3>
<p><code>before</code></p>
<p>: 1. Function argument</p>
<p><code>list</code></p>
<p>: 2. Function argument</p>
<h3 id="examples_28">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.toposort</code> usage example</p>
<div class="highlight"><pre><span></span><code>toposort hasPrefix <span class="p">[</span> <span class="s2">&quot;/home/user&quot;</span> <span class="s2">&quot;other&quot;</span> <span class="s2">&quot;/&quot;</span> <span class="s2">&quot;/home&quot;</span> <span class="p">]</span>
<span class="o">==</span> <span class="p">{</span> <span class="ss">result</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">&quot;/&quot;</span> <span class="s2">&quot;/home&quot;</span> <span class="s2">&quot;/home/user&quot;</span> <span class="s2">&quot;other&quot;</span> <span class="p">];</span> <span class="p">}</span>
toposort hasPrefix <span class="p">[</span> <span class="s2">&quot;/home/user&quot;</span> <span class="s2">&quot;other&quot;</span> <span class="s2">&quot;/&quot;</span> <span class="s2">&quot;/home&quot;</span> <span class="s2">&quot;/&quot;</span> <span class="p">]</span>
<span class="o">==</span> <span class="p">{</span> <span class="ss">cycle</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">&quot;/home/user&quot;</span> <span class="s2">&quot;/&quot;</span> <span class="s2">&quot;/&quot;</span> <span class="p">];</span> <span class="c1"># path leading to a cycle</span>
<span class="ss">loops</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">&quot;/&quot;</span> <span class="p">];</span> <span class="p">}</span> <span class="c1"># loops back to these elements</span>
toposort hasPrefix <span class="p">[</span> <span class="s2">&quot;other&quot;</span> <span class="s2">&quot;/home/user&quot;</span> <span class="s2">&quot;/home&quot;</span> <span class="s2">&quot;/&quot;</span> <span class="p">]</span>
<span class="o">==</span> <span class="p">{</span> <span class="ss">result</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">&quot;other&quot;</span> <span class="s2">&quot;/&quot;</span> <span class="s2">&quot;/home&quot;</span> <span class="s2">&quot;/home/user&quot;</span> <span class="p">];</span> <span class="p">}</span>
toposort <span class="p">(</span>a<span class="p">:</span> b<span class="p">:</span> a <span class="o">&lt;</span> b<span class="p">)</span> <span class="p">[</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span> <span class="p">]</span> <span class="o">==</span> <span class="p">{</span> <span class="ss">result</span> <span class="o">=</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">];</span> <span class="p">}</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1218">lib/lists.nix:1218</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.sort"><code>lib.lists.sort</code></h2>
<p>Sort a list based on a comparator function which compares two
elements and returns true if the first argument is strictly below
the second argument. The returned list is sorted in an increasing
order. The implementation does a quick-sort.</p>
<p>See also <a href="#function-library-lib.lists.sortOn"><code>sortOn</code></a>, which applies the
default comparison on a function-derived property, and may be more efficient.</p>
<h3 id="inputs_28">Inputs</h3>
<p><code>comparator</code></p>
<p>: 1. Function argument</p>
<p><code>list</code></p>
<p>: 2. Function argument</p>
<h3 id="type_24">Type</h3>
<div class="highlight"><pre><span></span><code>sort :: (a -&gt; a -&gt; Bool) -&gt; [a] -&gt; [a]
</code></pre></div>
<h3 id="examples_29">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.sort</code> usage example</p>
<div class="highlight"><pre><span></span><code>sort <span class="p">(</span>p<span class="p">:</span> q<span class="p">:</span> p <span class="o">&lt;</span> q<span class="p">)</span> <span class="p">[</span> <span class="mi">5</span> <span class="mi">3</span> <span class="mi">7</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="mi">3</span> <span class="mi">5</span> <span class="mi">7</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1273">lib/lists.nix:1273</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.sortOn"><code>lib.lists.sortOn</code></h2>
<p>Sort a list based on the default comparison of a derived property <code>b</code>.</p>
<p>The items are returned in <code>b</code>-increasing order.</p>
<p><strong>Performance</strong>:</p>
<p>The passed function <code>f</code> is only evaluated once per item,
unlike an unprepared <a href="#function-library-lib.lists.sort"><code>sort</code></a> using
<code>f p &lt; f q</code>.</p>
<p><strong>Laws</strong>:
<div class="highlight"><pre><span></span><code>sortOn <span class="ss">f</span> <span class="o">==</span> sort <span class="p">(</span>p<span class="p">:</span> q<span class="p">:</span> f p <span class="o">&lt;</span> f q<span class="p">)</span>
</code></pre></div></p>
<h3 id="inputs_29">Inputs</h3>
<p><code>f</code></p>
<p>: 1. Function argument</p>
<p><code>list</code></p>
<p>: 2. Function argument</p>
<h3 id="type_25">Type</h3>
<div class="highlight"><pre><span></span><code>sortOn :: (a -&gt; b) -&gt; [a] -&gt; [a], for comparable b
</code></pre></div>
<h3 id="examples_30">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.sortOn</code> usage example</p>
<div class="highlight"><pre><span></span><code>sortOn stringLength <span class="p">[</span> <span class="s2">&quot;aa&quot;</span> <span class="s2">&quot;b&quot;</span> <span class="s2">&quot;cccc&quot;</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;b&quot;</span> <span class="s2">&quot;aa&quot;</span> <span class="s2">&quot;cccc&quot;</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1319">lib/lists.nix:1319</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.compareLists"><code>lib.lists.compareLists</code></h2>
<p>Compare two lists element-by-element.</p>
<h3 id="inputs_30">Inputs</h3>
<p><code>cmp</code></p>
<p>: 1. Function argument</p>
<p><code>a</code></p>
<p>: 2. Function argument</p>
<p><code>b</code></p>
<p>: 3. Function argument</p>
<h3 id="examples_31">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.compareLists</code> usage example</p>
<div class="highlight"><pre><span></span><code>compareLists compare <span class="p">[]</span> <span class="p">[]</span>
<span class="o">=&gt;</span> <span class="mi">0</span>
compareLists compare <span class="p">[]</span> <span class="p">[</span> <span class="s2">&quot;a&quot;</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="mi">-1</span>
compareLists compare <span class="p">[</span> <span class="s2">&quot;a&quot;</span> <span class="p">]</span> <span class="p">[]</span>
<span class="o">=&gt;</span> <span class="mi">1</span>
compareLists compare <span class="p">[</span> <span class="s2">&quot;a&quot;</span> <span class="s2">&quot;b&quot;</span> <span class="p">]</span> <span class="p">[</span> <span class="s2">&quot;a&quot;</span> <span class="s2">&quot;c&quot;</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="mi">-1</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1367">lib/lists.nix:1367</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.naturalSort"><code>lib.lists.naturalSort</code></h2>
<p>Sort list using "Natural sorting".
Numeric portions of strings are sorted in numeric order.</p>
<h3 id="inputs_31">Inputs</h3>
<p><code>lst</code></p>
<p>: 1. Function argument</p>
<h3 id="examples_32">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.naturalSort</code> usage example</p>
<div class="highlight"><pre><span></span><code>naturalSort <span class="p">[</span><span class="s2">&quot;disk11&quot;</span> <span class="s2">&quot;disk8&quot;</span> <span class="s2">&quot;disk100&quot;</span> <span class="s2">&quot;disk9&quot;</span><span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span><span class="s2">&quot;disk8&quot;</span> <span class="s2">&quot;disk9&quot;</span> <span class="s2">&quot;disk11&quot;</span> <span class="s2">&quot;disk100&quot;</span><span class="p">]</span>
naturalSort <span class="p">[</span><span class="s2">&quot;10.46.133.149&quot;</span> <span class="s2">&quot;10.5.16.62&quot;</span> <span class="s2">&quot;10.54.16.25&quot;</span><span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span><span class="s2">&quot;10.5.16.62&quot;</span> <span class="s2">&quot;10.46.133.149&quot;</span> <span class="s2">&quot;10.54.16.25&quot;</span><span class="p">]</span>
naturalSort <span class="p">[</span><span class="s2">&quot;v0.2&quot;</span> <span class="s2">&quot;v0.15&quot;</span> <span class="s2">&quot;v0.0.9&quot;</span><span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;v0.0.9&quot;</span> <span class="s2">&quot;v0.2&quot;</span> <span class="s2">&quot;v0.15&quot;</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1406">lib/lists.nix:1406</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.take"><code>lib.lists.take</code></h2>
<p>Return the first (at most) N elements of a list.</p>
<h3 id="inputs_32">Inputs</h3>
<p><code>count</code></p>
<p>: Number of elements to take</p>
<p><code>list</code></p>
<p>: Input list</p>
<h3 id="type_26">Type</h3>
<div class="highlight"><pre><span></span><code>take :: int -&gt; [a] -&gt; [a]
</code></pre></div>
<h3 id="examples_33">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.take</code> usage example</p>
<div class="highlight"><pre><span></span><code>take <span class="mi">2</span> <span class="p">[</span> <span class="s2">&quot;a&quot;</span> <span class="s2">&quot;b&quot;</span> <span class="s2">&quot;c&quot;</span> <span class="s2">&quot;d&quot;</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;a&quot;</span> <span class="s2">&quot;b&quot;</span> <span class="p">]</span>
take <span class="mi">2</span> <span class="p">[</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1447">lib/lists.nix:1447</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.drop"><code>lib.lists.drop</code></h2>
<p>Remove the first (at most) N elements of a list.</p>
<h3 id="inputs_33">Inputs</h3>
<p><code>count</code></p>
<p>: Number of elements to drop</p>
<p><code>list</code></p>
<p>: Input list</p>
<h3 id="type_27">Type</h3>
<div class="highlight"><pre><span></span><code>drop :: int -&gt; [a] -&gt; [a]
</code></pre></div>
<h3 id="examples_34">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.drop</code> usage example</p>
<div class="highlight"><pre><span></span><code>drop <span class="mi">2</span> <span class="p">[</span> <span class="s2">&quot;a&quot;</span> <span class="s2">&quot;b&quot;</span> <span class="s2">&quot;c&quot;</span> <span class="s2">&quot;d&quot;</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;c&quot;</span> <span class="s2">&quot;d&quot;</span> <span class="p">]</span>
drop <span class="mi">2</span> <span class="p">[</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1483">lib/lists.nix:1483</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.hasPrefix"><code>lib.lists.hasPrefix</code></h2>
<p>Whether the first list is a prefix of the second list.</p>
<h3 id="inputs_34">Inputs</h3>
<p><code>list1</code></p>
<p>: 1. Function argument</p>
<p><code>list2</code></p>
<p>: 2. Function argument</p>
<h3 id="type_28">Type</h3>
<div class="highlight"><pre><span></span><code>hasPrefix :: [a] -&gt; [a] -&gt; bool
</code></pre></div>
<h3 id="examples_35">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.hasPrefix</code> usage example</p>
<div class="highlight"><pre><span></span><code>hasPrefix <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">]</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="no">true</span>
hasPrefix <span class="p">[</span> <span class="mi">0</span> <span class="mi">1</span> <span class="p">]</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="no">false</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1520">lib/lists.nix:1520</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.removePrefix"><code>lib.lists.removePrefix</code></h2>
<p>Remove the first list as a prefix from the second list.
Error if the first list isn't a prefix of the second list.</p>
<h3 id="inputs_35">Inputs</h3>
<p><code>list1</code></p>
<p>: 1. Function argument</p>
<p><code>list2</code></p>
<p>: 2. Function argument</p>
<h3 id="type_29">Type</h3>
<div class="highlight"><pre><span></span><code>removePrefix :: [a] -&gt; [a] -&gt; [a]
</code></pre></div>
<h3 id="examples_36">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.removePrefix</code> usage example</p>
<div class="highlight"><pre><span></span><code>removePrefix <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">]</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">]</span>
removePrefix <span class="p">[</span> <span class="mi">0</span> <span class="mi">1</span> <span class="p">]</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="l">&lt;error&gt;</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1558">lib/lists.nix:1558</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.sublist"><code>lib.lists.sublist</code></h2>
<p>Return a list consisting of at most <code>count</code> elements of <code>list</code>,
starting at index <code>start</code>.</p>
<h3 id="inputs_36">Inputs</h3>
<p><code>start</code></p>
<p>: Index at which to start the sublist</p>
<p><code>count</code></p>
<p>: Number of elements to take</p>
<p><code>list</code></p>
<p>: Input list</p>
<h3 id="type_30">Type</h3>
<div class="highlight"><pre><span></span><code>sublist :: int -&gt; int -&gt; [a] -&gt; [a]
</code></pre></div>
<h3 id="examples_37">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.sublist</code> usage example</p>
<div class="highlight"><pre><span></span><code>sublist <span class="mi">1</span> <span class="mi">3</span> <span class="p">[</span> <span class="s2">&quot;a&quot;</span> <span class="s2">&quot;b&quot;</span> <span class="s2">&quot;c&quot;</span> <span class="s2">&quot;d&quot;</span> <span class="s2">&quot;e&quot;</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;b&quot;</span> <span class="s2">&quot;c&quot;</span> <span class="s2">&quot;d&quot;</span> <span class="p">]</span>
sublist <span class="mi">1</span> <span class="mi">3</span> <span class="p">[</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1603">lib/lists.nix:1603</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.commonPrefix"><code>lib.lists.commonPrefix</code></h2>
<p>The common prefix of two lists.</p>
<h3 id="inputs_37">Inputs</h3>
<p><code>list1</code></p>
<p>: 1. Function argument</p>
<p><code>list2</code></p>
<p>: 2. Function argument</p>
<h3 id="type_31">Type</h3>
<div class="highlight"><pre><span></span><code>commonPrefix :: [a] -&gt; [a] -&gt; [a]
</code></pre></div>
<h3 id="examples_38">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.commonPrefix</code> usage example</p>
<div class="highlight"><pre><span></span><code>commonPrefix <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span> <span class="p">]</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">4</span> <span class="mi">8</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">]</span>
commonPrefix <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">]</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">]</span>
commonPrefix <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">]</span> <span class="p">[</span> <span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1649">lib/lists.nix:1649</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.last"><code>lib.lists.last</code></h2>
<p>Return the last element of a list.</p>
<p>This function throws an error if the list is empty.</p>
<h3 id="inputs_38">Inputs</h3>
<p><code>list</code></p>
<p>: 1. Function argument</p>
<h3 id="type_32">Type</h3>
<div class="highlight"><pre><span></span><code>last :: [a] -&gt; a
</code></pre></div>
<h3 id="examples_39">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.last</code> usage example</p>
<div class="highlight"><pre><span></span><code>last <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="mi">3</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1692">lib/lists.nix:1692</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.init"><code>lib.lists.init</code></h2>
<p>Return all elements but the last.</p>
<p>This function throws an error if the list is empty.</p>
<h3 id="inputs_39">Inputs</h3>
<p><code>list</code></p>
<p>: 1. Function argument</p>
<h3 id="type_33">Type</h3>
<div class="highlight"><pre><span></span><code>init :: [a] -&gt; [a]
</code></pre></div>
<h3 id="examples_40">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.init</code> usage example</p>
<div class="highlight"><pre><span></span><code>init <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1725">lib/lists.nix:1725</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.crossLists"><code>lib.lists.crossLists</code></h2>
<p>Return the image of the cross product of some lists by a function.</p>
<h3 id="examples_41">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.crossLists</code> usage example</p>
<div class="highlight"><pre><span></span><code>crossLists <span class="p">(</span>x<span class="p">:</span> y<span class="p">:</span> <span class="s2">&quot;</span><span class="si">${</span><span class="nb">toString</span> x<span class="si">}${</span><span class="nb">toString</span> y<span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> <span class="p">[[</span><span class="mi">1</span> <span class="mi">2</span><span class="p">]</span> <span class="p">[</span><span class="mi">3</span> <span class="mi">4</span><span class="p">]]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;13&quot;</span> <span class="s2">&quot;14&quot;</span> <span class="s2">&quot;23&quot;</span> <span class="s2">&quot;24&quot;</span> <span class="p">]</span>
</code></pre></div>
<p>The following function call is equivalent to the one deprecated above:</p>
<div class="highlight"><pre><span></span><code>mapCartesianProduct <span class="p">(</span>x<span class="p">:</span> <span class="s2">&quot;</span><span class="si">${</span><span class="nb">toString</span> x<span class="o">.</span>a<span class="si">}${</span><span class="nb">toString</span> x<span class="o">.</span>b<span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> <span class="p">{</span> <span class="ss">a</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span> <span class="mi">2</span><span class="p">];</span> <span class="ss">b</span> <span class="o">=</span> <span class="p">[</span><span class="mi">3</span> <span class="mi">4</span><span class="p">];</span> <span class="p">}</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="s2">&quot;13&quot;</span> <span class="s2">&quot;14&quot;</span> <span class="s2">&quot;23&quot;</span> <span class="s2">&quot;24&quot;</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1751">lib/lists.nix:1751</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.unique"><code>lib.lists.unique</code></h2>
<p>Remove duplicate elements from the <code>list</code>. O(n^2) complexity.</p>
<h3 id="inputs_40">Inputs</h3>
<p><code>list</code></p>
<p>: Input list</p>
<h3 id="type_34">Type</h3>
<div class="highlight"><pre><span></span><code>unique :: [a] -&gt; [a]
</code></pre></div>
<h3 id="examples_42">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.unique</code> usage example</p>
<div class="highlight"><pre><span></span><code>unique <span class="p">[</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">4</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1793">lib/lists.nix:1793</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.allUnique"><code>lib.lists.allUnique</code></h2>
<p>Check if list contains only unique elements. O(n^2) complexity.</p>
<h3 id="inputs_41">Inputs</h3>
<p><code>list</code></p>
<p>: 1. Function argument</p>
<h3 id="type_35">Type</h3>
<div class="highlight"><pre><span></span><code>allUnique :: [a] -&gt; bool
</code></pre></div>
<h3 id="examples_43">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.allUnique</code> usage example</p>
<div class="highlight"><pre><span></span><code>allUnique <span class="p">[</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="no">false</span>
allUnique <span class="p">[</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">4</span> <span class="mi">1</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="no">true</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1824">lib/lists.nix:1824</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.intersectLists"><code>lib.lists.intersectLists</code></h2>
<p>Intersects list 'list1' and another list (<code>list2</code>).</p>
<p>O(nm) complexity.</p>
<h3 id="inputs_42">Inputs</h3>
<p><code>list1</code></p>
<p>: First list</p>
<p><code>list2</code></p>
<p>: Second list</p>
<h3 id="examples_44">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.intersectLists</code> usage example</p>
<div class="highlight"><pre><span></span><code>intersectLists <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">]</span> <span class="p">[</span> <span class="mi">6</span> <span class="mi">3</span> <span class="mi">2</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="mi">3</span> <span class="mi">2</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1854">lib/lists.nix:1854</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.subtractLists"><code>lib.lists.subtractLists</code></h2>
<p>Subtracts list 'e' from another list (<code>list2</code>).</p>
<p>O(nm) complexity.</p>
<h3 id="inputs_43">Inputs</h3>
<p><code>e</code></p>
<p>: First list</p>
<p><code>list2</code></p>
<p>: Second list</p>
<h3 id="examples_45">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.lists.subtractLists</code> usage example</p>
<div class="highlight"><pre><span></span><code>subtractLists <span class="p">[</span> <span class="mi">3</span> <span class="mi">2</span> <span class="p">]</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span> <span class="mi">3</span> <span class="p">]</span>
<span class="o">=&gt;</span> <span class="p">[</span> <span class="mi">1</span> <span class="mi">4</span> <span class="mi">5</span> <span class="p">]</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1883">lib/lists.nix:1883</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.lists.mutuallyExclusive"><code>lib.lists.mutuallyExclusive</code></h2>
<p>Test if two lists have no common element.
It should be slightly more efficient than (intersectLists a b == [])</p>
<h3 id="inputs_44">Inputs</h3>
<p><code>a</code></p>
<p>: 1. Function argument</p>
<p><code>b</code></p>
<p>: 2. Function argument</p>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix#L1899">lib/lists.nix:1899</a> in <code>&lt;nixpkgs&gt;</code>.</p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Licenced MIT
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://git.auxolotl.org/auxolotl/docs" target="_blank" rel="noopener" title="Aux Docs Repo" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.777 0a2.9 2.9 0 1 1-2.529 4.322H12.91a4.266 4.266 0 0 0-4.265 4.195v2.118a7.076 7.076 0 0 1 4.147-1.42l.118-.002h1.338a2.9 2.9 0 0 1 5.43 1.422 2.9 2.9 0 0 1-5.43 1.422H12.91a4.266 4.266 0 0 0-4.265 4.195v2.319A2.9 2.9 0 0 1 7.222 24 2.9 2.9 0 0 1 5.8 18.57V8.589a7.109 7.109 0 0 1 6.991-7.108l.118-.001h1.338A2.9 2.9 0 0 1 16.778 0ZM7.223 19.905a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Zm9.554-10.464a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.39Zm0-7.735a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Z"/></svg>
</a>
<a href="https://forum.aux.computer/" target="_blank" rel="noopener" title="Aux Forum" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12.103 0C18.666 0 24 5.485 24 11.997c0 6.51-5.33 11.99-11.9 11.99L0 24V11.79C0 5.28 5.532 0 12.103 0zm.116 4.563a7.395 7.395 0 0 0-6.337 3.57 7.247 7.247 0 0 0-.148 7.22L4.4 19.61l4.794-1.074a7.424 7.424 0 0 0 8.136-1.39 7.256 7.256 0 0 0 1.737-7.997 7.375 7.375 0 0 0-6.84-4.585h-.008z"/></svg>
</a>
<a href="https://wiki.auxolotl.org/" target="_blank" rel="noopener" title="Aux Wiki" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17.801 13.557c.148.098.288.202.417.313 1.854 1.6 3.127 4.656 2.582 7.311-1.091-.255-5.747-1.055-7.638-3.383-.91-1.12-1.366-2.081-1.569-2.885a5.65 5.65 0 0 0 .034-.219c.089.198.197.35.313.466.24.24.521.335.766.372.304.046.594-.006.806-.068l.001.001c.05-.015.433-.116.86-.342.325-.173 2.008-.931 3.428-1.566Zm-7.384 1.435C9.156 16.597 6.6 18.939.614 18.417c.219-1.492 1.31-3.019 2.51-4.11.379-.345.906-.692 1.506-1.009.286.168.598.332.939.486 2.689 1.221 3.903 1.001 4.89.573a1.3 1.3 0 0 0 .054-.025 6.156 6.156 0 0 0-.096.66Zm4.152-.462c.38-.341.877-.916 1.383-1.559-.389-.15-.866-.371-1.319-.591-.598-.29-1.305-.283-2.073-.315a4.685 4.685 0 0 1-.804-.103c.014-.123.027-.246.038-.369.062.104.673.057.871.057.354 0 1.621.034 3.074-.574 1.452-.608 2.55-1.706 3.022-3.225.474-1.52.22-3.091-.168-3.952-.169.709-1.453 2.381-1.926 2.871-.473.489-2.381 2.296-2.972 2.921-.7.74-.688.793-1.332 1.302-.202.19-.499.402-.563.53.027-.338.039-.675.027-.997a7.653 7.653 0 0 0-.032-.523c.322-.059.567-.522.567-.861 0-.224-.106-.247-.271-.229.075-.894.382-3.923 1.254-4.281.218.109.831.068.649-.295-.182-.364-.825-.074-1.081.266-.28.374-.956 2.046-.92 4.324-.113.014-.174.033-.322.033-.171 0-.321-.04-.433-.05.034-2.275-.714-3.772-.84-4.169-.12-.375-.491-.596-.781-.596-.146 0-.272.056-.333.179-.182.363.459.417.677.308.706.321 1.156 3.519 1.254 4.277-.125-.006-.199.035-.199.233 0 .311.17.756.452.843a.442.442 0 0 0-.007.03s-.287.99-.413 2.189a4.665 4.665 0 0 1-.718-.225c-.714-.286-1.355-.583-2.019-.566-.664.018-1.366.023-1.804-.036-.438-.058-.649-.15-.649-.15s-.234.365.257 1.075c.42.607 1.055 1.047 1.644 1.18.589.134 1.972.18 2.785-.377.16-.109.317-.228.459-.34a8.717 8.717 0 0 0-.013.626c-.289.753-.571 1.993-.268 3.338 0-.001.701-.842.787-2.958.006-.144.009-.271.01-.383.052-.248.103-.518.148-.799.072.135.151.277.234.413.511.842 1.791 1.37 2.383 1.49.091.019.187.032.285.038Zm-1.12.745c-.188.055-.445.1-.713.059-.21-.031-.45-.11-.655-.316-.169-.168-.312-.419-.401-.789a9.837 9.837 0 0 0 .039-.82l.049-.243c.563.855 1.865 1.398 2.476 1.522.036.008.072.014.109.02l-.013.009c-.579.415-.76.503-.891.558Zm6.333-2.818c-.257.114-4.111 1.822-5.246 2.363.98-.775 3.017-3.59 3.699-4.774 1.062.661 1.468 1.109 1.623 1.441.101.217.09.38.096.515a.57.57 0 0 1-.172.455Zm-9.213 1.62a1.606 1.606 0 0 1-.19.096c-.954.414-2.126.61-4.728-.571-2.023-.918-3.024-2.157-3.371-2.666.476.161 1.471.473 2.157.524.282.021.703.068 1.167.125.021.209.109.486.345.829l.001.001c.451.651 1.134 1.119 1.765 1.262.622.141 2.083.182 2.942-.407a3.12 3.12 0 0 0 .132-.093l.001.179a6.052 6.052 0 0 0-.221.721Zm5.512-1.271a17.49 17.49 0 0 1-1.326-.589c.437.042 1.054.083 1.692.108-.121.162-.244.323-.366.481Zm.932-1.26c-.12.17-.245.343-.373.517-.241.018-.478.03-.709.038a29.05 29.05 0 0 1-.741-.048c.608-.065 1.228-.252 1.823-.507Zm.22-.315c-.809.382-1.679.648-2.507.648-.472 0-.833.018-1.139.039v.001c-.324-.031-.665-.039-1.019-.054a3.555 3.555 0 0 1-.152-.009c.102-.002.192-.006.249-.006.363 0 1.662.034 3.151-.589 1.508-.632 2.645-1.773 3.136-3.351.37-1.186.31-2.402.086-3.312.458-.336.86-.651 1.147-.91.501-.451.743-.733.848-.869.199.206.714.864.685 2.138-.036 1.611-.606 3.187-1.501 4.154a9.099 9.099 0 0 1-1.321 1.132 11.978 11.978 0 0 0-.644-.422l-.089-.055-.051.091c-.184.332-.5.825-.879 1.374ZM4.763 5.817c-.157 1.144.113 2.323.652 3.099.539.776 2.088 2.29 3.614 2.505.991.14 2.055.134 2.055.134s-.593-.576-1.114-1.66c-.521-1.085-.948-2.104-1.734-2.786-.785-.681-1.601-1.416-2.045-1.945-.444-.53-.59-.86-.59-.86s-.656.175-.838 1.513Zm14.301 4.549a9.162 9.162 0 0 0 1.3-1.12c.326-.352.611-.782.845-1.265 1.315.145 2.399.371 2.791.434 0 0-.679 1.971-3.945 3.022l-.016-.035c-.121-.26-.385-.594-.975-1.036Zm-11.634.859a8.537 8.537 0 0 1-.598-.224c-1.657-.693-2.91-1.944-3.449-3.678-.498-1.601-.292-3.251.091-4.269.225.544.758 1.34 1.262 2.01a3.58 3.58 0 0 0-.172.726c-.163 1.197.123 2.428.687 3.24.416.599 1.417 1.62 2.555 2.193-.128.002-.253.003-.376.002Zm-1.758-.077c-.958-.341-1.901-.787-2.697-1.368C-.07 7.559 0 6.827 0 6.827s1.558-.005 3.088.179c.03.126.065.251.104.377.557 1.791 1.851 3.086 3.562 3.803l.047.019a4.254 4.254 0 0 1-.267-.026h-.001c-.401-.053-.595-.135-.595-.135l-.157-.069-.092.144-.017.029Zm6.807-1.59c.086.017.136.058.136.145 0 .197-.242.5-.597.597l-.01-.161a.887.887 0 0 0 .283-.243c.078-.099.142-.217.188-.338Zm-1.591.006c.033.1.076.197.129.282.061.097.134.18.217.24l-.021.083c-.276-.093-.424-.293-.424-.466 0-.078.035-.119.099-.139Zm-.025-.664c-.275-.816-.795-2.022-1.505-2.179-.296.072-.938.096-.691-.145.246-.24 1.085-.048 1.283.217.145.194.744.806 1.011 1.737l.032.227a.324.324 0 0 0-.13.143Zm1.454-.266c.251-.99.889-1.639 1.039-1.841.197-.265 1.036-.457 1.283-.217.247.241-.395.217-.691.145-.69.152-1.2 1.296-1.481 2.109a.364.364 0 0 0-.067-.059.37.37 0 0 0-.092-.043l.009-.094Zm4.802-2.708a9.875 9.875 0 0 1-.596.705c-.304.315-1.203 1.176-1.963 1.916.647-.955 1.303-1.806 2.184-2.376.123-.08.249-.161.375-.245Z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["content.tooltips", "search.highlight", "navigation.tabs", "navigation.indexes", "navigation.prune"], "search": "../../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../../assets/javascripts/bundle.fe8b6f2b.min.js"></script>
</body>
</html>