tengo un registro en un documento que utilice dos IntMaps:¿Cómo se usa IntMap con diferentes tipos de claves?
data Doc = Doc { kernels :: IntMap Kernel, nodes :: IntMap Node }
pero he encontrado que las claves de ambos IntMaps tienen un significado diferente y no llego a separar en dos tipos diferentes y no consigo errores cuando mezcla tipos de kernel y tipos de nodos Quiero tener funciones que comprueben las claves del mapa del kernel y los mapas de nodos y no permita la confusión. Por ejemplo:
someFunction :: Doc -> KernelKey -> NodeKey -> a
someFunction doc k1 k2 = .....
En lugar de la corriente:
someFunction :: Doc -> Int -> Int -> a
someFunction doc k1 k2 = .... -- warning check twice k1 and k2
personal ¿Se Posible? O cambiaré de IntMap
a Map
.
Gracias
¿Cuál es su razón para usar 'IntMap' en lugar de' Map'? Si se trata de rendimiento, entonces debe considerar 'contenedores no ordenados' (que podría ser la mejor solución para usted, pero vale la pena considerar). –
Consulte también la pregunta relacionada sobre 'IntSet' http://stackoverflow.com/questions/5746590/how-to-newtype-intset ... podría echarle un vistazo al paquete [' enummapset'] (http://hackage.haskell.org/package/enummapset), que es lo que estoy usando actualmente – hvr