? Haskell typefun
Вот я хочу какую-то структуру, работающую как:
(Key -> Value Key) причем соотвествие Value Key задается в рантайме, т.е. у меня есть Free монатка, в которой написано, что-то вроде
intKey <- define "Key" read show (42::Int)
stringKey <- define "Key2" id id ("42"::String)
action $ do { x <- readValue intKey :: MyMonad Int ; y <- readValue stringKey :: MyMonad String ; ...
}
далее, внутри интерпретатора фримондки по декларациям должна создаться структура где будут положены значения по умолчанию (последний параметр define) и ещё в рантайме ему могут скидываться ("key","value") пары, соотв readValue должны считывать обновленные.
Вопрос, как это все сложить? У меня пока только идея сделать Data.Map String Any и немного unsafeCoerce (ну или +Typeable и coerce), что выглядит как-то печальненько.