diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2006-09-24 15:21:48 +0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2006-09-24 15:21:48 +0000 |
commit | df8873e14ad071812e27f38b69783f04dbae5f44 (patch) | |
tree | 34be83feb4734efcb21f4f3d1ced66db4c24e382 | |
parent | 2ab4bc44c780d2e28647f7559664675b756f38b9 (diff) |
* lessThan primitive for integer comparison.
-rw-r--r-- | src/libexpr/primops.cc | 9 | ||||
-rw-r--r-- | tests/lang/eval-okay-arithmetic.nix | 5 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index 1739b6656..16d165634 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -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() { addPrimOp("builtins", 0, primBuiltins); @@ -810,6 +818,7 @@ void EvalState::addPrimOps() addPrimOp("removeAttrs", 2, primRemoveAttrs); addPrimOp("relativise", 2, primRelativise); addPrimOp("__add", 2, primAdd); + addPrimOp("__lessThan", 2, primLessThan); } diff --git a/tests/lang/eval-okay-arithmetic.nix b/tests/lang/eval-okay-arithmetic.nix index 735f01cf4..ac1fcb73c 100644 --- a/tests/lang/eval-okay-arithmetic.nix +++ b/tests/lang/eval-okay-arithmetic.nix @@ -2,7 +2,10 @@ with import ./lib.nix; 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: |