1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-07-07 10:11:47 +02:00

New primitives:

* `sub' to subtract two numbers.
* `stringLength' to get the length of a string.
* `substring' to get a substring of a string.  These should be enough
  to allow most string operations to be expressed.
This commit is contained in:
Eelco Dolstra 2007-01-29 14:23:09 +00:00
parent 7dedbd896a
commit 7349bd0176
8 changed files with 88 additions and 6 deletions

View file

@ -1,18 +1,26 @@
with builtins;
rec {
fold = op: nul: list:
if list == []
then nul
else op (builtins.head list) (fold op nul (builtins.tail list));
else op (head list) (fold op nul (tail list));
concat =
fold (x: y: x + y) "";
flatten = x:
if builtins.isList x
if isList x
then fold (x: y: (flatten x) ++ y) [] x
else [x];
sum = fold (x: y: builtins.add x y) 0;
sum = fold (x: y: add x y) 0;
hasSuffix = ext: fileName:
let lenFileName = stringLength fileName;
lenExt = stringLength ext;
in !(lessThan lenFileName lenExt) &&
substring (sub lenFileName lenExt) lenFileName fileName == ext;
}