diff --git a/compare/structures.js b/compare/structures.js index 6db9640..d1f669d 100644 --- a/compare/structures.js +++ b/compare/structures.js @@ -1,10 +1,10 @@ +// Total ordering of composed types + import { compareNumbers } from "./primitives.js" import { get, length as lengthLs } from "../structures/list.js"; import { read, length as lengthSet } from "../structures/set.js"; import { constructorProduct, getLeft, getRight } from "../structures/product.js"; import { match } from "../structures/sum.js"; -import { makeGeneric } from "../generics/generics.js"; -import { lsType } from "../structures/types.js"; // (a -> a -> Int) -> [a] -> [a] -> Int export const compareLists = compareElems => x => y => { @@ -48,13 +48,13 @@ export const compareSets = compareElems => x => y => { // because of the underlying red-black tree, iteration happens in ordered fashion const iterate = iterX => iterY => read(iterX) - (keyX => nextX => - read(iterY) - // we could also use the comparison function that is embedded in the set object, - // but to be consistent with the other comparison-functions, we don't. - (keyY => nextY => compareElems(keyX)(keyY) || iterate(nextX)(nextY)) - (0)) // end of set y (we'll never get here because sets are same size) - (0) // end of set x; - iterate(first(x))(first(y)); + (keyX => nextX => + read(iterY) + // we could also use the comparison function that is embedded in the set object, + // but to be consistent with the other comparison-functions, we don't. + (keyY => nextY => compareElems(keyX)(keyY) || iterate(nextX)(nextY)) + (0)) // end of set y (we'll never get here because sets are same size) + (0); // end of set x + return iterate(first(x))(first(y)); })(); };