aboutsummaryrefslogtreecommitdiff
path: root/examples/Hash.hs
diff options
context:
space:
mode:
authorKazu Yamamoto <kazu@iij.ad.jp>2013-02-01 11:59:24 +0900
committerKazu Yamamoto <kazu@iij.ad.jp>2013-02-01 11:59:24 +0900
commit8d4c94ca5a969a5ebbb791939fb0195dc672429e (patch)
tree560a944a7105cd715f9acba46790bd7e1a77f82f /examples/Hash.hs
parent266a20afd2d27f28bbb62839ebc3f70bd83bfcce (diff)
parent3d25ea2929a9a9bd0768339b8ac5fd1b7c4670ad (diff)
Merge branch 'ghc-7.6' into ghc-7.6-merge-2
Conflicts: haddock.cabal src/Haddock/Interface/AttachInstances.hs src/Haddock/Interface/Create.hs src/Haddock/Interface/LexParseRn.hs src/Haddock/InterfaceFile.hs src/Haddock/Types.hs Only GHC HEAD can compile this. GHC 7.6.x cannot compile this. Some test fail.
Diffstat (limited to 'examples/Hash.hs')
-rw-r--r--examples/Hash.hs45
1 files changed, 0 insertions, 45 deletions
diff --git a/examples/Hash.hs b/examples/Hash.hs
deleted file mode 100644
index b399b129..00000000
--- a/examples/Hash.hs
+++ /dev/null
@@ -1,45 +0,0 @@
-{- |
- Implementation of fixed-size hash tables, with a type
- class for constructing hash values for structured types.
--}
-module Hash (
- -- * The @HashTable@ type
- HashTable,
-
- -- ** Operations on @HashTable@s
- new, insert, lookup,
-
- -- * The @Hash@ class
- Hash(..),
- ) where
-
-import Array
-
--- | A hash table with keys of type @key@ and values of type @val@.
--- The type @key@ should be an instance of 'Eq'.
-data HashTable key val = HashTable Int (Array Int [(key,val)])
-
--- | Builds a new hash table with a given size
-new :: (Eq key, Hash key) => Int -> IO (HashTable key val)
-
--- | Inserts a new element into the hash table
-insert :: (Eq key, Hash key) => key -> val -> IO ()
-
--- | Looks up a key in the hash table, returns @'Just' val@ if the key
--- was found, or 'Nothing' otherwise.
-lookup :: Hash key => key -> IO (Maybe val)
-
--- | A class of types which can be hashed.
-class Hash a where
- -- | hashes the value of type @a@ into an 'Int'
- hash :: a -> Int
-
-instance Hash Int where
- hash = id
-
-instance Hash Float where
- hash = trunc
-
-instance (Hash a, Hash b) => Hash (a,b) where
- hash (a,b) = hash a `xor` hash b
-