Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
lfa:2023:lab_python_extras [2023/11/03 16:11] pdmatei |
lfa:2023:lab_python_extras [2023/11/15 20:54] (current) mihai.udubasa [Dataclasses] |
||
---|---|---|---|
Line 79: | Line 79: | ||
<code haskell> | <code haskell> | ||
- | data List a = Cons a List | Empty deriving Show | + | data List a = Cons a (List a) | Empty deriving Show |
</code> | </code> | ||
Line 107: | Line 107: | ||
===== Dictionaries, Sets and Hashable Objects ===== | ===== Dictionaries, Sets and Hashable Objects ===== | ||
- | As part of your project, it is very likely that you will attempt to use a set or list either as an element of another set, or as a part of the key of a dictionary. However, if you actually try this, you will get an error stating that your element is not hashable. Why is this? | + | As part of your project, i |
+ | t is very likely that you will attempt to use a set or list either as an element of another set, or as a part of the key of a dictionary. However, if you actually try this, you will get an error stating that your element is not hashable. Why is this? | ||
In short, both dictionaries and sets are implemented as hashmaps in the python library (for quick search and append of unique elements). This means that elements should have a hash method implemented (alongside a method to check equality between objects) and, moreover, this hash fuction should always be consistent with the equality comparison (objects which are equal should always have the same hash, but the other way around is not necessary). | In short, both dictionaries and sets are implemented as hashmaps in the python library (for quick search and append of unique elements). This means that elements should have a hash method implemented (alongside a method to check equality between objects) and, moreover, this hash fuction should always be consistent with the equality comparison (objects which are equal should always have the same hash, but the other way around is not necessary). |