diff --git a/src/collection/_impl/_hashset_impl.scad b/src/collection/_impl/_hashset_impl.scad index 627f804a..0e8c6d04 100644 --- a/src/collection/_impl/_hashset_impl.scad +++ b/src/collection/_impl/_hashset_impl.scad @@ -1,7 +1,7 @@ use <../../util/slice.scad>; use <../../util/some.scad>; -function _hashset_add(set, elem, hash, eq) = +function _hashset_add(set, elem, eq, hash) = let( idx = hash(elem) % len(set), bucket = set[idx] @@ -14,9 +14,9 @@ function _hashset_add(set, elem, hash, eq) = slice(set, idx + 1) ); -function _hashset(elems, leng, buckets, hash, eq, i = 0) = +function _hashset(elems, leng, buckets, eq, hash, i = 0) = i == leng ? buckets : - _hashset(elems, leng, _hashset_add(buckets, elems[i], hash, eq), hash, eq, i + 1); + _hashset(elems, leng, _hashset_add(buckets, elems[i], eq, hash), eq, hash, i + 1); function _find(lt, elem, eq, leng, i = 0) = i == leng ? -1 : diff --git a/src/collection/hashset.scad b/src/collection/hashset.scad index 3c04a530..27e8296c 100644 --- a/src/collection/hashset.scad +++ b/src/collection/hashset.scad @@ -22,22 +22,22 @@ echo(hashset_list(hashset_del(s2, 2))); df_hash = function(e) _str_hash(e); df_eq = function(e1, e2) e1 == e2; -function hashset(lt, hash = df_hash, eq = df_eq, bucket_size = 16) = +function hashset(lt, eq = df_eq, hash = df_hash, bucket_size = 16) = let( lt_undef = is_undef(lt), size = lt_undef ? bucket_size : len(lt), buckets = [for(i = [0:bucket_size - 1]) []] ) lt_undef ? buckets : - _hashset(lt, len(lt), buckets, hash, eq); + _hashset(lt, len(lt), buckets, eq, hash); -function hashset_has(set, elem, hash = df_hash, eq = df_eq) = +function hashset_has(set, elem, eq = df_eq, hash = df_hash) = some(set[hash(elem) % len(set)], function(e) eq(e, elem)); -function hashset_add(set, elem, hash = df_hash, eq = df_eq) = - _hashset_add(set, elem, hash, eq); +function hashset_add(set, elem, eq = df_eq, hash = df_hash) = + _hashset_add(set, elem, eq, hash); -function hashset_del(set, elem, hash = df_hash, eq = df_eq) = +function hashset_del(set, elem, eq = df_eq, hash = df_hash) = let( bidx = hash(elem) % len(set), bucket = set[bidx],