* lessThan primitive for integer comparison.

This commit is contained in:
Eelco Dolstra 2006-09-24 15:21:48 +00:00
parent 2ab4bc44c7
commit df8873e14a
2 changed files with 13 additions and 1 deletions

View file

@ -779,6 +779,14 @@ static Expr primAdd(EvalState & state, const ATermVector & args)
} }
static Expr primLessThan(EvalState & state, const ATermVector & args)
{
int i1 = evalInt(state, args[0]);
int i2 = evalInt(state, args[1]);
return makeBool(i1 < i2);
}
void EvalState::addPrimOps() void EvalState::addPrimOps()
{ {
addPrimOp("builtins", 0, primBuiltins); addPrimOp("builtins", 0, primBuiltins);
@ -810,6 +818,7 @@ void EvalState::addPrimOps()
addPrimOp("removeAttrs", 2, primRemoveAttrs); addPrimOp("removeAttrs", 2, primRemoveAttrs);
addPrimOp("relativise", 2, primRelativise); addPrimOp("relativise", 2, primRelativise);
addPrimOp("__add", 2, primAdd); addPrimOp("__add", 2, primAdd);
addPrimOp("__lessThan", 2, primLessThan);
} }

View file

@ -2,7 +2,10 @@ with import ./lib.nix;
let { let {
range = first: last: [first] ++ (if first == last then [] else range (builtins.add first 1) last); range = first: last:
if builtins.lessThan last first
then []
else [first] ++ range (builtins.add first 1) last;
/* Supposedly tail recursive version: /* Supposedly tail recursive version: