diff --git a/Data/Nanoparsec.hs b/Data/Nanoparsec.hs
--- a/Data/Nanoparsec.hs
+++ b/Data/Nanoparsec.hs
@@ -62,9 +62,15 @@
     -- * State observation and manipulation functions
   , I.endOfInput
   , I.ensure
+
+    -- * Applicative specializations
+    -- $applicative
+  , (<*.)
+  , (.*>)
   )
 where
 
+import Control.Applicative
 import qualified Data.ByteString as B
 import qualified Data.ByteString.Lazy as LB
 import Data.Monoid
@@ -219,3 +225,24 @@
 eitherResult (Done _ r)     = Right r
 eitherResult (Fail _ _ msg) = Left msg
 eitherResult _              = Left "Result: incomplete input"
+
+-- $applicative
+--
+-- We provide specializations of @\<*@ and @*\>@ as @\<*.@ and
+-- @.*\>@, respectively.  Together with @IsString@ instance of
+-- 'I.Parser', you may write parsers applicatively more easily.
+-- For example:
+--
+-- > paren p = "(" .*> p <*. ")"
+--
+-- instead of the more verbose
+--
+-- > paren p = string "(" *> p <* string ")"
+
+-- | Same as @Applicative@'s @\<*@ but specialized.
+(<*.) :: Monoid δ ⇒ I.Parser δ a → I.Parser δ δ → I.Parser δ a
+(<*.) = (<*)
+
+-- | Same as @Applicative@'s @*\>@ but specialized.
+(.*>) :: Monoid δ ⇒ I.Parser δ δ → I.Parser δ a → I.Parser δ a
+(.*>) = (*>)
diff --git a/Data/Nanoparsec/Internal.hs b/Data/Nanoparsec/Internal.hs
--- a/Data/Nanoparsec/Internal.hs
+++ b/Data/Nanoparsec/Internal.hs
@@ -1,5 +1,7 @@
 {-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE UndecidableInstances #-}
 {-# LANGUAGE UnicodeSyntax #-}
 {-|
 Module      : Data.Nanoparsec.Internal
@@ -54,6 +56,7 @@
 import qualified Data.ByteString as B
 import qualified Data.ByteString.Lazy as LB
 import Data.Monoid
+import Data.String
 import qualified Data.ListLike as LL
 import Data.Word
 import Prelude hiding (take, takeWhile, elem, notElem)
@@ -201,6 +204,8 @@
     {-# SPECIALIZE mplus ∷ Parser B.ByteString a → Parser B.ByteString a → Parser B.ByteString a #-}
     {-# SPECIALIZE mplus ∷ Parser LB.ByteString a → Parser LB.ByteString a → Parser LB.ByteString a #-}
 
+instance (Eq δ, LL.ListLike δ ε, IsString δ) ⇒ IsString (Parser δ δ) where
+    fromString = string . fromString    
 
 noAdds ∷ Monoid δ ⇒ S δ → S δ
 noAdds (S s _ c) = S s ø c
diff --git a/nanoparsec.cabal b/nanoparsec.cabal
--- a/nanoparsec.cabal
+++ b/nanoparsec.cabal
@@ -1,5 +1,5 @@
 Name:                nanoparsec
-Version:             0.1
+Version:             0.1.1
 Synopsis:            An implementation of attoparsec-like parser around list-like
 Description:         An implementation of attoparsec-like parser around list-like
 License:             BSD3
@@ -15,7 +15,7 @@
   Exposed-modules:   Data.Nanoparsec,
                      Data.Nanoparsec.Combinator
   Other-modules:     Data.Nanoparsec.Internal
-  Build-depends:     base >= 4.3 && < 5,
+  Build-depends:     base >= 4.0 && < 5,
                      bytestring == 0.9.*,
                      ListLike == 2.0.*
   Ghc-options:       -Wall -O2
