diff --git a/Data/Symbol/Unsafe.hs b/Data/Symbol/Unsafe.hs
--- a/Data/Symbol/Unsafe.hs
+++ b/Data/Symbol/Unsafe.hs
@@ -37,7 +37,10 @@
     compare (Symbol i1 _) (Symbol i2 _) = compare i1 i2
 
 instance Show Symbol where
-    showsPrec _ (Symbol _ s) = showString s
+    showsPrec d (Symbol _ s) = showsPrec d s
+
+instance Read Symbol where
+    readsPrec d t = [(intern s, t') | (s, t') <- readList t]
 
 #if __GLASGOW_HASKELL__ >= 608
 instance IsString Symbol where
diff --git a/symbol.cabal b/symbol.cabal
--- a/symbol.cabal
+++ b/symbol.cabal
@@ -1,5 +1,5 @@
 name:           symbol
-version:        0.2.3
+version:        0.2.4
 cabal-version:  >= 1.6
 license:        BSD3
 license-file:   LICENSE
