Add Hashable typeclass
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 20/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Bereich
- backend
Rechercherichtung
The issue proposes adding a Hashable typeclass to the prelude and deriving support to the compiler, but names no files or tests. Start by reviewing the existing Eq and Ord typeclasses and the linked purescript-unordered-collections implementation. Done means agreeing on the design and adding the prelude typeclass and compiler deriving support; the thread has had no comment for years, so check whether the proposal is still wanted.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
I would like to add a Hashable typeclass to the prelude and deriving support for it to the compiler. It is intended as an approximation of equality for use in hash-based algorithms and data structures, such as hash maps, not cryptographically secure digests or password hashes.
class Eq a <= Hashable a where
hash :: a -> Int
There are two reasons for adding it to the prelude instead of having a standalone library:
- Dependencies: To be useful in general data structures, as many datatypes as possible should be hashable. Ideally, whenever a datatype is
Eq, it should also haveOrdandHashableinstances, if possible. Most packages depend on the prelude already.[citation needed] This should make it easier to convince authors to addHashableinstances, because they do not need to add another dependency, all that is required is one more deriving line below the lines forEqandOrd. - Performance: Usually, the main goal of hashing is to avoid expensive comparisons. One could write a generic hash function in terms of
purescript-generics-rep. This would be fine for many applications, but for hash-based data structures etc., the hash function should really be as fast as possible.
I am more than happy to make an initial pull request (based on https://github.com/fehrenbach/purescript-unordered-collections/blob/master/src/Data/Hashable.purs) and work on deriving support.
What do people think?
- Vorherrschende Sprache
- PureScript
- Sterne
- 168
- Forks
- 90
- Ø Merge
- 3 T. 1 Std.
- Gemergte PRs (30 T.)
- 1
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Kein Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus purescript/purescript-prelude
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 57/100
purescript/purescript-prelude#317 · 1 Reaktion ·
-
Int bottom is not safeOffen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 32/100
purescript/purescript-prelude#312 · 5 Kommentare ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
purescript/purescript-prelude#310 · 5 Kommentare ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 24/100
purescript/purescript-prelude#308 · 2 Kommentare ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
purescript/purescript-prelude#307 · 1 Kommentar · 1 Reaktion ·
Alle Issues in purescript/purescript-prelude
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
-
ManageSieve proxy: a backend's NO/BYE greeting is skipped as a capability line and reported as EOFOffenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
Mend: dependency security vulnerability
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
-
Mend: dependency security vulnerability
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
ManageIQ/manageiq-pods#1476 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
prime-radiant-inc/evener#6366 ·
Maintainer antworten meist innerhalb von 1 Tag