diff --git a/fb.cabal b/fb.cabal
--- a/fb.cabal
+++ b/fb.cabal
@@ -1,5 +1,5 @@
 name:              fb
-version:           0.7.2
+version:           0.7.3
 license:           BSD3
 license-file:      LICENSE
 author:            Felipe Lessa
@@ -90,7 +90,7 @@
       -- Test-only dependencies
     , HUnit
     , QuickCheck
-    , hspec == 0.9.*
+    , hspec >= 0.9.1 && < 0.10
     , fb
   extensions:
     TypeFamilies
diff --git a/src/Facebook/OpenGraph.hs b/src/Facebook/OpenGraph.hs
--- a/src/Facebook/OpenGraph.hs
+++ b/src/Facebook/OpenGraph.hs
@@ -10,6 +10,7 @@
 -- import Control.Monad (mzero)
 -- import Data.ByteString.Char8 (ByteString)
 import Data.Function (on)
+import Data.List (intersperse)
 import Data.Text (Text)
 -- import Data.Typeable (Typeable, Typeable1)
 import Data.Int (Int8, Int16, Int32)
@@ -166,6 +167,15 @@
 -- | Facebook's simple type @String@.
 instance SimpleType Text where
     encodeFbParam = id
+
+-- | A comma-separated list of simple types.  This definition
+-- doesn't work everywhere, just for a few combinations that
+-- Facebook uses (e.g. @[Int]@).  Also, encoding a list of lists
+-- is the same as encoding the concatenation of all lists.  In
+-- other words, this instance is here more for your convenience
+-- than to make sure your code is correct.
+instance SimpleType a => SimpleType [a] where
+    encodeFbParam = T.concat . intersperse "," . map encodeFbParam
 
 showT :: Show a => a -> Text
 showT = T.pack . show
diff --git a/tests/runtests.hs b/tests/runtests.hs
--- a/tests/runtests.hs
+++ b/tests/runtests.hs
@@ -3,7 +3,6 @@
 import Control.Applicative
 import Control.Monad.IO.Class (MonadIO(liftIO))
 import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Writer (Writer)
 import Data.Int (Int8, Int16, Int32)
 import Data.Text (Text)
 import Data.Time (parseTime)
@@ -97,7 +96,7 @@
               -> H.Manager
               -> (forall a. FB.FacebookT FB.Auth   IO a -> IO a)
               -> (forall a. FB.FacebookT FB.NoAuth IO a -> IO a)
-              -> Writer [Spec] ()
+              -> Specs
 facebookTests pretitle manager runAuth runNoAuth = do
   let describe' = describe . (pretitle ++)
   describe' "getAppAccessToken" $ do
@@ -143,7 +142,7 @@
         FB.userGender user     &?= Just FB.Male
 
 
-libraryTests :: Writer [Spec] ()
+libraryTests :: Specs
 libraryTests = do
   describe "SimpleType" $ do
     it "works for Bool" $ (map FB.encodeFbParam [True, False]) @?= ["1", "0"]
@@ -170,6 +169,19 @@
     prop "works for Word8"  (propShowRead :: Word8  -> Bool)
     prop "works for Word16" (propShowRead :: Word16 -> Bool)
     prop "works for Word32" (propShowRead :: Word32 -> Bool)
+
+    let propShowReadL :: (Show a, Read a, Eq a, FB.SimpleType a) => [a] -> Bool
+        propShowReadL x = read ('[' : T.unpack (FB.encodeFbParam x) ++ "]") == x
+    prop "works for [Float]"  (propShowReadL :: [Float]  -> Bool)
+    prop "works for [Double]" (propShowReadL :: [Double] -> Bool)
+    prop "works for [Int]"    (propShowReadL :: [Int]    -> Bool)
+    prop "works for [Int8]"   (propShowReadL :: [Int8]   -> Bool)
+    prop "works for [Int16]"  (propShowReadL :: [Int16]  -> Bool)
+    prop "works for [Int32]"  (propShowReadL :: [Int32]  -> Bool)
+    prop "works for [Word]"   (propShowReadL :: [Word]   -> Bool)
+    prop "works for [Word8]"  (propShowReadL :: [Word8]  -> Bool)
+    prop "works for [Word16]" (propShowReadL :: [Word16] -> Bool)
+    prop "works for [Word32]" (propShowReadL :: [Word32] -> Bool)
 
     prop "works for Text" (\t -> FB.encodeFbParam t == t)
 
