On Tue, Jul 31, 2012 at 1:13 PM, Alexander Foremny <alexanderfore...@gmail.com> wrote: > Hello list, > > I am currently thinking that a problem of mine would best be solved if > there was a Map-like data structure in which the value returned is > parametrized over the lookup type. > > I wonder is this makes sense and if such a data structure exists or if > it could be created while still being well typed. I essentially want > to statically define a scope of Key values and dynamically define a > list of keys. > >> -- Scope of possible keys. >> type Label = String >> data Key a where >> KeyStr :: Label -> Key String >> KeyInt :: Label -> Key Int >> KeyChoice :: Label -> [a] -> Key a > >> -- Some key values, to be extended at runtime. >> strKey "Some String" >> strKey' "Another String" >> intKey "Some integer" >> choiceKey "Chose one" [ "a", "b", "c" ] :: KeyChoice String > > Now I need a data structure to possibly associate a value to the key. > >> data MapG = ... >> type Value a = a >> insert :: Key a -> Value a -> MapG Key Value -> MapG Key Value >> lookup :: Key a -> MapG Key Value -> Maybe (Value a) > > I tried implementing this with multiple Map k a's. I tried adding a > phantom type on some storage type of to implement KeyChoice as of type > Key Int, but I ran into troubles with this approach. I wonder if > Dynamic or Type Families could achieve this, but I am quite at a loss > and would like to hear your opinion. > > I did try to search for this a bit, but I don't quite know how to > phrase my problem. I'd like to apologize in advance if this question > has been asked already. > > Regards, > Alexander Foremny > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe
I think you might be looking for something like vault[1]. HTH, Michael [1] http://hackage.haskell.org/package/vault _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe