diff options
author | Alyssa Ross <hi@alyssa.is> | 2023-08-23 10:09:14 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-08-26 09:07:03 +0000 |
commit | 63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f (patch) | |
tree | d58934cb48f9c953b19a0d0d5cffc0d0c5561471 /nixpkgs/lib/lists.nix | |
parent | c4eef3dacb2a3d359561f30917d9e3cc4e041be9 (diff) | |
parent | 91a22f76cd1716f9d0149e8a5c68424bb691de15 (diff) | |
download | nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.gz nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.bz2 nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.lz nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.xz nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.zst nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.zip |
Merge branch 'nixos-unstable' of https://github.com/NixOS/nixpkgs
Conflicts: nixpkgs/pkgs/build-support/go/module.nix nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix
Diffstat (limited to 'nixpkgs/lib/lists.nix')
-rw-r--r-- | nixpkgs/lib/lists.nix | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/nixpkgs/lib/lists.nix b/nixpkgs/lib/lists.nix index 3e058b3f1aef..0800aeb65451 100644 --- a/nixpkgs/lib/lists.nix +++ b/nixpkgs/lib/lists.nix @@ -638,6 +638,40 @@ rec { # Input list list: sublist count (length list) list; + /* Whether the first list is a prefix of the second list. + + Type: hasPrefix :: [a] -> [a] -> bool + + Example: + hasPrefix [ 1 2 ] [ 1 2 3 4 ] + => true + hasPrefix [ 0 1 ] [ 1 2 3 4 ] + => false + */ + hasPrefix = + list1: + list2: + take (length list1) list2 == list1; + + /* Remove the first list as a prefix from the second list. + Error if the first list isn't a prefix of the second list. + + Type: removePrefix :: [a] -> [a] -> [a] + + Example: + removePrefix [ 1 2 ] [ 1 2 3 4 ] + => [ 3 4 ] + removePrefix [ 0 1 ] [ 1 2 3 4 ] + => <error> + */ + removePrefix = + list1: + list2: + if hasPrefix list1 list2 then + drop (length list1) list2 + else + throw "lib.lists.removePrefix: First argument is not a list prefix of the second argument"; + /* Return a list consisting of at most `count` elements of `list`, starting at index `start`. |