diff --git a/MemoTrie.cabal b/MemoTrie.cabal
--- a/MemoTrie.cabal
+++ b/MemoTrie.cabal
@@ -1,5 +1,5 @@
 Name:                MemoTrie
-Version:             0.4.5
+Version:             0.4.7
 Cabal-Version:       >= 1.2
 Synopsis:            Trie-based memo functions
 Category:            Data
@@ -22,7 +22,7 @@
 Library
   hs-Source-Dirs:      src
   Extensions:          
-  Build-Depends:       base
+  Build-Depends:       base < 5
   Exposed-Modules:     
                      Data.MemoTrie
   ghc-options:         -Wall
diff --git a/src/Data/MemoTrie.hs b/src/Data/MemoTrie.hs
--- a/src/Data/MemoTrie.hs
+++ b/src/Data/MemoTrie.hs
@@ -296,6 +296,11 @@
 unbits [] = 0
 unbits (x:xs) = unbit x .|. shiftL (unbits xs) 1
 
+instance HasTrie Char where
+    data Char :->: a = CharTrie (Int :->: a)
+    untrie (CharTrie t) n = untrie t (fromEnum n)
+    trie f = CharTrie (trie (f . toEnum))
+    enumerate (CharTrie t) = enum' toEnum t
 
 -- Although Int is a Bits instance, we can't use bits directly for
 -- memoizing, because the "bits" function gives an infinite result, since
