Skip to content

Commit

Permalink
Revert "lib: bitAnd, bitOr, bitXor"
Browse files Browse the repository at this point in the history
  • Loading branch information
Profpatsch committed Jun 5, 2018
1 parent 6842319 commit fb37041
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 62 deletions.
8 changes: 4 additions & 4 deletions lib/default.nix
Expand Up @@ -56,10 +56,10 @@ let
hasAttr head isAttrs isBool isInt isList isString length
lessThan listToAttrs pathExists readFile replaceStrings seq
stringLength sub substring tail;
inherit (trivial) id const concat or and bitAnd bitOr bitXor
boolToString mergeAttrs flip mapNullable inNixShell min max
importJSON warn info nixpkgsVersion version mod compare
splitByAndCompare functionArgs setFunctionArgs isFunction;
inherit (trivial) id const concat or and boolToString mergeAttrs
flip mapNullable inNixShell min max importJSON warn info
nixpkgsVersion version mod compare splitByAndCompare
functionArgs setFunctionArgs isFunction;

inherit (fixedPoints) fix fix' extends composeExtensions
makeExtensible makeExtensibleWithCustomName;
Expand Down
15 changes: 0 additions & 15 deletions lib/tests/misc.nix
Expand Up @@ -45,21 +45,6 @@ runTests {
expected = true;
};

testBitAnd = {
expr = (bitAnd 3 10);
expected = 2;
};

testBitOr = {
expr = (bitOr 3 10);
expected = 11;
};

testBitXor = {
expr = (bitXor 3 10);
expected = 9;
};

# STRINGS

testConcatMapStrings = {
Expand Down
43 changes: 0 additions & 43 deletions lib/trivial.nix
@@ -1,38 +1,4 @@
{ lib }:
let
zipIntBits = f: x: y:
let
# (intToBits 6) -> [ 0 1 1 ]
intToBits = x:
if x==0 then
[]
else
let
headbit = if (x / 2) * 2 != x then 1 else 0; # x & 1
tailbits = if x < 0 then 9223372036854775807 + ((x+1) / 2) else x / 2; # x >>> 1
in
[headbit] ++ (intToBits tailbits);

# (bitsToInt [ 0 1 1 ]) -> 6
bitsToInt = l:
if l==[] then
0
else
(builtins.head l) + (2 * (bitsToInt (builtins.tail l)));

zipListsWith' = fst: snd:
if fst==[] && snd==[] then
[]
else if fst==[] then
[(f 0 (builtins.head snd))] ++ (zipListsWith' [] (builtins.tail snd))
else if snd==[] then
[(f (builtins.head fst) 0 )] ++ (zipListsWith' (builtins.tail fst) [] )
else
[(f (builtins.head fst) (builtins.head snd))] ++ (zipListsWith' (builtins.tail fst) (builtins.tail snd));
in
assert (builtins.isInt x) && (builtins.isInt y);
bitsToInt (zipListsWith' (intToBits x) (intToBits y));
in
rec {

/* The identity function
Expand Down Expand Up @@ -65,15 +31,6 @@ rec {
/* boolean “and” */
and = x: y: x && y;

/* bitwise “and” */
bitAnd = builtins.bitAnd or zipIntBits (a: b: if a==1 && b==1 then 1 else 0);

/* bitwise “or” */
bitOr = builtins.bitOr or zipIntBits (a: b: if a==1 || b==1 then 1 else 0);

/* bitwise “xor” */
bitXor = builtins.bitXor or zipIntBits (a: b: if a!=b then 1 else 0);

/* Convert a boolean to a string.
Note that toString on a bool returns "1" and "".
*/
Expand Down

0 comments on commit fb37041

Please sign in to comment.