diff options
author | Eduardo Julian | 2019-07-24 20:25:55 -0400 |
---|---|---|
committer | Eduardo Julian | 2019-07-24 20:25:55 -0400 |
commit | e87fba1b7204ee611dcb5528b8a8a3716588c976 (patch) | |
tree | 77420205b2617c189a26af573b341771bf361b59 /stdlib/source/lux/abstract | |
parent | edcc0a2433722d09e7b1ef7922e7fa1f51e7fc15 (diff) |
Small improvements here and there.
Diffstat (limited to 'stdlib/source/lux/abstract')
-rw-r--r-- | stdlib/source/lux/abstract/hash.lux | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/stdlib/source/lux/abstract/hash.lux b/stdlib/source/lux/abstract/hash.lux index d2dee3bcb..752227fb7 100644 --- a/stdlib/source/lux/abstract/hash.lux +++ b/stdlib/source/lux/abstract/hash.lux @@ -1,9 +1,8 @@ (.module: lux [// - [equivalence (#+ Equivalence)]]) + ["." equivalence (#+ Equivalence)]]) -## [Signatures] (signature: #export (Hash a) {#.doc (doc "A way to produce hash-codes for a type's instances." "A necessity when working with some data-structures, such as dictionaries or sets.")} @@ -11,3 +10,13 @@ &equivalence) (: (-> a Nat) hash)) + +(def: #export (product leftH rightH) + (All [l r] (-> (Hash l) (Hash r) (Hash [l r]))) + (structure + (def: &equivalence + (equivalence.product (:: leftH &equivalence) + (:: rightH &equivalence))) + (def: (hash [leftV rightV]) + (n/* (:: leftH hash leftV) + (:: rightH hash rightV))))) |