mirror of
https://github.com/NixOS/nix
synced 2025-06-27 08:31:16 +02:00
* Added a builtin function `isList' to test whether a value is a list.
With this primitive, a list-flattening function can be implemented (NIX-55, example is in tests/lang/eval-okay-flatten.nix).
This commit is contained in:
parent
c02a44183f
commit
d315210612
3 changed files with 29 additions and 0 deletions
|
@ -521,6 +521,14 @@ static Expr primIsNull(EvalState & state, const ATermVector & args)
|
|||
}
|
||||
|
||||
|
||||
/* Determine whether the argument is a list. */
|
||||
static Expr primIsList(EvalState & state, const ATermVector & args)
|
||||
{
|
||||
ATermList list;
|
||||
return makeBool(matchList(evalExpr(state, args[0]), list));
|
||||
}
|
||||
|
||||
|
||||
static Path findDependency(Path dir, string dep)
|
||||
{
|
||||
if (dep[0] == '/') throw EvalError(
|
||||
|
@ -782,6 +790,7 @@ void EvalState::addPrimOps()
|
|||
addPrimOp("__toXML", 1, primToXML);
|
||||
addPrimOp("__toFile", 1, primToFile);
|
||||
addPrimOp("isNull", 1, primIsNull);
|
||||
addPrimOp("__isList", 1, primIsList);
|
||||
addPrimOp("dependencyClosure", 1, primDependencyClosure);
|
||||
addPrimOp("abort", 1, primAbort);
|
||||
addPrimOp("__head", 1, primHead);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue