Имитация глобальной переменной

Я работаю над проектом в Haskell, и мне нужна глобальная переменная. В настоящее время я 'Я делаю это:

 funcs :: Map.Map String Double
 funcs = Map.empty

 eliminate :: Maybe a -> a
 eliminate (Just a) = a

 insert :: String -> Double -> Map.Map String Double -> Map.Map String Double
 insert key value cache = Map.insert key value cache

 f = do

                 let aux = insert "aaa" 1 funcs
                 let funcs = aux
                 .........


 g = do
        if (Map.lookup "aaa" funcs) == Nothing then error "not defined" else putStr "ok"

Проблема в том, что всегда г-функция выдает ошибку. Знаете ли вы, как я могу симулировать глобальную переменную?

Ответы на вопрос(2)

Ваш ответ на вопрос