Peter Verswyvelen wrote:
These functions have their arguments reversed when compare to e.g. Map
For example
Data.HashTable.lookup :: HashTable key val -> key -> IO (Maybe val)
Data.Map.lookup :: Ord key => key -> Map key val -> Maybe val
I find this a bit odd. Is this by design?
I'd guess it's due more to antiquity than to intention. Data.Map mirrors
the Prelude, along with almost everyone else:
GHC.List.lookup :: (Eq a) => a -> [(a, b)] -> Maybe b
Data.IntMap.lookup :: (Monad m) => Data.IntMap.Key -> IntMap a -> m a
Data.Trie.lookup :: ByteString -> Trie a -> Maybe a
Data.Set.member :: (Ord a) => a -> Set a -> Bool
As a design issue, I think the dominant order is better for partial
application since they make good arguments to Control.Monad.State.gets
and similar state-like HOFs. Considering the IO ugliness of HashTable,
Jason Dagit may have a point though. As I recall, this discussion has
lead to flame wars in the past.
--
Live well,
~wren
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe