* lessThan primitive for integer comparison.
This commit is contained in:
		
							parent
							
								
									2ab4bc44c7
								
							
						
					
					
						commit
						df8873e14a
					
				
					 2 changed files with 13 additions and 1 deletions
				
			
		|  | @ -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); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|   |   | ||||||
|  |  | ||||||
|  | @ -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: | ||||||
|    |    | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue